首页 > 数据库 >mysql统计函数

mysql统计函数

时间:2023-05-25 11:32:53浏览次数:47  
标签:ename 函数 -- math 统计 mysql NULL SELECT emp

1. 合计/统计函数  758

1.1 count  758

mysql统计函数_字符串

1.1.1 练习

统计一个班级共有多少学生?

统计数学成绩大于90的学生有多少个?

统计总分大于250的人数有多少?

count(*)和count(列)的区别

-- 解释 :count(*) 返回满足条件的记录的行数

-- count(列): 统计满足条件的某列有多少个,但是会排除 为 null 的情况

代码在E:\java学习\初级\course155\db_
statistics
#合计/统计函数  758
-- 统计一个班级共有多少学生?
SELECT COUNT(*) FROM student
-- 统计数学成绩大于90的学生有多少个?
SELECT COUNT(*) FROM student
	WHERE math>90
-- 统计总分大于250的人数有多少?
SELECT COUNT(*) FROM student
	WHERE (math+chinese+english)>250
-- count(*)和count(列)的区别
-- 解释 :count(*) 返回满足条件的记录的行数
-- count(列): 统计满足条件的某列有多少个,但是会排除 为 null 的情况
CREATE TABLE t15(
	`name` VARCHAR(20));
INSERT INTO t15 VALUES('tom');
INSERT INTO t15 VALUES('jack');
INSERT INTO t15 VALUES('mary');
INSERT INTO t15 VALUES(NULL);
SELECT * FROM t15;
SELECT COUNT(*) FROM t15;-- 4
SELECT COUNT(`name`) FROM t15;-- 3,因为排除了为null的情况

1.2 sum   758

mysql统计函数_java_02

1.2.1 课堂练习:

■统计一个班级数学总成绩?

■统计一个班级语文、英语、数学各科的总成绩

■统计一个班级语文、英语、数学的成绩总和

■统计一个班级语文成绩平均分

注意: sum仅对数值起作用,没有意义。

注意:对多列求和,“,”号不能少。

代码在E:\java学习\初级\course155\db_
statistics
-- 演示sum函数的使用  758
-- ■统计一个班级数学总成绩?
SELECT SUM(math) FROM student
-- ■统计一个班级语文、英语、数学各科的总成绩
SELECT SUM(math) AS math_total_score,SUM(english) AS english_total_score,
	SUM(chinese) AS chinese_total_score FROM student
-- ■统计一个班级语文、英语、数学的成绩总和
SELECT SUM(math+english+chinese) FROM student
-- ■统计一个班级语文成绩平均分
SELECT SUM(chinese)/COUNT(*) FROM student

1.3 avg和Max/Min  758

mysql统计函数_统计函数_03

mysql统计函数_字符串_04

1.3.1 练习:

■求一个班级数学平均分?

■求一个班级总分平均分

练习:求班级最高分和最低分(数值范围在统计中特别有用)

代码在E:\java学习\初级\course155\db_
statistics
--  演示avg的使用  758
-- ■求一个班级数学平均分?
SELECT AVG(math) FROM student
-- ■求一个班级总分平均分
SELECT AVG(math+english+chinese) FROM student

-- 演示Max/Min的使用  758
-- 练习:求班级最高分和最低分(数值范围在统计中特别有用)
SELECT MAX(math+english+chinese),MIN(math+english+chinese) FROM student
-- 求出班级数学最高分和最低分
SELECT MAX(math) AS math_high_socre, MIN(math) AS math_low_socre
	FROM student;

2. 使用 group by 子句对列进行分组 [先创建测试表] 759

mysql统计函数_统计函数_05

2.1 使用 having 子句对分组后的结果进行过滤  759

mysql统计函数_统计函数_06


2.2 练习  759

2和3的代码在

group by用于对查询的结果分组统计,(示意图)

having子句用于限制分组显示结果

?如何显示每个部门 ]的平均工资和最高工资

?显示每个部门的每种岗位的平均工资和最低工资

?显示平均工资低于2000的部门号和它的平均工资//别名

代码在E:\java学习\初级\course155\db_
groupby
CREATE TABLE dept( /*部门表*/
deptno MEDIUMINT   UNSIGNED  NOT NULL  DEFAULT 0, 
dname VARCHAR(20)  NOT NULL  DEFAULT "",
loc VARCHAR(13) NOT NULL DEFAULT ""
);

INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK'), (20, 'RESEARCH', 'DALLAS'), (30, 'SALES', 'CHICAGO'), (40, 'OPERATIONS', 'BOSTON');
SELECT * FROM dept

#创建表EMP雇员
CREATE TABLE emp
(empno  MEDIUMINT UNSIGNED  NOT NULL  DEFAULT 0, /*编号*/
ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
mgr MEDIUMINT UNSIGNED ,/*上级编号*/
hiredate DATE NOT NULL,/*入职时间*/
sal DECIMAL(7,2)  NOT NULL,/*薪水*/
comm DECIMAL(7,2) ,/*红利*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
);
#添加测试数据
 INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, '1990-12-17', 800.00,NULL , 20), 
(7499, 'ALLEN', 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30),  
(7521, 'WARD', 'SALESMAN', 7698, '1991-2-22', 1250.00, 500.00, 30),  
(7566, 'JONES', 'MANAGER', 7839, '1991-4-2', 2975.00,NULL,20),  
(7654, 'MARTIN', 'SALESMAN', 7698, '1991-9-28',1250.00,1400.00,30),  
(7698, 'BLAKE','MANAGER', 7839,'1991-5-1', 2850.00,NULL,30),  
(7782, 'CLARK','MANAGER', 7839, '1991-6-9',2450.00,NULL,10),  
(7788, 'SCOTT','ANALYST',7566, '1997-4-19',3000.00,NULL,20),  
(7839, 'KING','PRESIDENT',NULL,'1991-11-17',5000.00,NULL,10),  
(7844, 'TURNER', 'SALESMAN',7698, '1991-9-8', 1500.00, NULL,30),  
(7900, 'JAMES','CLERK',7698, '1991-12-3',950.00,NULL,30),  
(7902, 'FORD', 'ANALYST',7566,'1991-12-3',3000.00, NULL,20),  
(7934,'MILLER','CLERK',7782,'1992-1-23', 1300.00, NULL,10);

SELECT *FROM emp

#工资级别表
CREATE TABLE salgrade
(
grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,-- 工资级别
losal DECIMAL(17,2)  NOT NULL,-- 该级别的最低工资
hisal DECIMAL(17,2)  NOT NULL-- 该级别的最高工资
);

INSERT INTO salgrade VALUES (1,700,1200);
INSERT INTO salgrade VALUES (2,1201,1400);
INSERT INTO salgrade VALUES (3,1401,2000);
INSERT INTO salgrade VALUES (4,2001,3000);
INSERT INTO salgrade VALUES (5,3001,9999);
SELECT *FROM salgrade

#演示groupby和having的使用          759
-- group by用于对查询的结果分组统计
-- having子句用于限制分组显示结果
-- ?如何显示每个部门 ]的平均工资和最高工资
-- 分析: avg(sal) max(sal)
-- 按照部分来分组查询
SELECT AVG(sal),MAX(sal),deptno
	FROM emp GROUP BY deptno
-- ?显示每个部门的每种岗位的平均工资和最低工资
-- 分析 1. 显示每个部门的平均工资和最低工资
-- 2. 显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(sal),MIN(sal),deptno,job
	FROM emp GROUP BY deptno,job
-- ?显示平均工资低于2000的部门号和它的平均工资//别名
-- 分析 [写 sql 语句的思路是化繁为简,各个击破]
-- 1. 显示各个部门的平均工资和部门号
-- 2. 在 1 的结果基础上,进行过滤,保留 AVG(sal) < 2000
SELECT AVG(sal),deptno
	FROM emp GROUP BY deptno
		HAVING AVG(sal)<2000
-- 3. 使用别名进行过滤
SELECT AVG(sal) AS avg_sal,deptno
	FROM emp GROUP BY deptno
		HAVING avg_sal<2000

3. 字符串相关函数  760

mysql统计函数_字符串_07

代码在E:\java学习\初级\course155\db_

char_

#演示字符串相关函数的使用  使用emp表来演示 760
-- CHARSET(str) 返回字串字符集
SELECT CHARSET(ename) FROM emp
-- CONCAT (string2 [,... ]) 连接字串,将多个列拼接成一列
SELECT CONCAT(ename,' 工作是 ',job) FROM emp;
-- INSTR (string ,substring ) 返回substring在string中出现的位置,没有返回0
SELECT INSTR('chinaandworld','world')FROM DUAL;#DUAL亚元表,是系统提供的表,可以作为测试表使用
-- UCASE (string2 ) 转换成大写
SELECT UCASE(ename) FROM emp
-- LCASE (string2 ) 转换成小写
SELECT LCASE(ename) FROM emp
-- LEFT (string2 ,length ) 从string2中的左边起取length个字符
SELECT LEFT(ename,2)FROM emp
-- right (string2 ,length ) 从string2中的右边起取length个字符
SELECT RIGHT(ename,2)FROM emp
-- LENGTH (string ) string长度[按照字节]
SELECT LENGTH(ename) FROM emp
-- REPLACE (str ,search_ str ,replace_ str ) 在str中用replace_ str 替换search_str
-- 如果是 MANAGER 就替换成 经理
SELECT ename,REPLACE(job,'MANAGER','经理') FROM emp
-- STRCMP (string1 ,string2 ) 逐字符比较两字串大小
SELECT STRCMP('hsp','asp') FROM DUAL;
-- SUBSTRING (str,position [,length]) 从str的position开始[从1开始计算] ,取length个字符
-- 从 ename 列的第一个位置开始取出 2 个字符
SELECT SUBSTRING(ename,1,2)FROM emp
-- LTRIM (string2 ) RTRIM (string2 ) TRIM(string)  去除前端空格或后端空格或者左右两端都去
SELECT LTRIM(' 中国世界')FROM DUAL
SELECT RTRIM('中国世界  ')FROM DUAL
SELECT TRIM(' 中国世界  ')FROM DUAL

3.1 练习  761

练习:以首字母小写的方式显示所有员Lemp表的姓名使用两种方式

代码在E:\java学习\初级\course155\db_

char_

-- 练习:以首字母小写的方式显示所有员Lemp表的姓名使用两种方式   761
-- 方式一 
-- 思路先取出 ename 的第一个字符,转成小写的
-- 把他和后面的字符串进行拼接输出即可
SELECT CONCAT(LCASE(SUBSTRING(ename,1,1)),SUBSTRING(ename,2)) AS new_name#2后面可以不写直接默认取完
	FROM emp
-- 方式二
SELECT CONCAT(LCASE(LEFT(ename,1)),SUBSTRING(ename,2)) AS new_name#2后面可以不写直接默认取完
	FROM emp

标签:ename,函数,--,math,统计,mysql,NULL,SELECT,emp
From: https://blog.51cto.com/u_15784725/6346232

相关文章

  • mysql数学和日期和加密函数
    1. 数学相关函数  762rand()返回一个随机浮点值v,范围在0到1之间(即其范围为0≤v≤1.0)。若已指定一个整数参数N.则它被用作种子值,用来产生重复序列。1.1 练习代码在E:\java学习\初级\course156\db_math#演示数学相关函数762--ABS(num)绝对值SELECTABS(-10)FROMDUAL;#......
  • java函数式编程stream流操作lambda表达式使用方法引用用法等练习
    java函数式编程stream流操作lambda表达式使用方法引用用法等练习 @Testvoidtest01(){System.out.println("111");List<Author>authors=getAuthor();//stream流打对象中一个字段authors.stream().distinct().forEach(author......
  • MySQL8中binlog过期参数
    binlog_expire_logs_seconds设置二进制日志过期时间(以秒为单位)。二进制日志文件过期后,可以被自动删除。可能的删除发生在启动时和刷新二进制日志(flushlogs、或日志容量超过max_binlog_size的设置)时。默认的二进制日志过期时间为2592000秒,即30天(30*24*60*60秒)。如果binlo......
  • 【MySQL】【锁】MySQL 中的锁
    1  前言我们这节来看看MySQL中的锁,采用Q&A的形式,看起来会比较轻松。2 锁的分类在MySQL里,根据加锁的范围,可以分为全局锁、表级锁和行锁三类。3  全局锁3.1  全局锁是怎么用的?要使用全局锁,则要执行这条命令:flushtableswithreadlock执行后,整个数据库就处......
  • #Powerbi 1分钟学会,SUMMARIZE函数,分组汇总并新建表
    今天我们来学习一个新的表函数,SUMMARIZE函数是DAX中的一个函数,它可以根据一列或多列对数据进行分组,并且可以使用指定的表达式为汇总后的表添加新列,形成一张新表。一:基础语法SUMMARIZE函数的语法是:SUMMARIZE (表, 分组列1 [, 分组列2]… [, 名称, 表达式]…)其中:表,是任何......
  • mysql 多个count(*)结果展示在一行
    1select2count(DISTINCTqid,IF(question_type='单选题',TRUE,NULL))as单选题总数,3count(DISTINCTqid,IF(question_type='多选题',TRUE,NULL))as多选题总数,4count(DISTINCTqid,IF(question_type='判断题',TRUE,NULL))as判断题总......
  • 现代 CSS 解决方案:CSS 原生支持的三角函数
    在CSS中,存在许多数学函数,这些函数能够通过简单的计算操作来生成某些属性值,例如:calc():用于计算任意长度、百分比或数值型数据,并将其作为CSS属性值。min()和max():用于比较一组数值中的最大值或最小值,也可以与任意长度、百分比或数值型数据一同使用。clamp():用于将属性值......
  • 【MySQL用法】mysql日期时间函数总结(附带mysql官网介绍)
    MySQL提供了大量丰富的函数,在MySQL的使用中经常会用到各种函数,本文记录的是常见的MySQL的日期与时间函数,主要用于处理日期和时间值。MySQL获得当前日期+时间函数获得当前日期+时间(date+time)函数:now(),SYSDATE();SELECTnow(),SYSDATE();sysdate()日期时间函数跟now()类似,区......
  • C++中const和constexpr关键字解析:常量、函数和指针
    C++中const和constexpr的作用很多C++的初学者看到const这个关键字的第一反应都是一头雾水,主要是因为const可以出现在很多的位置,以及后面加入的constexpr更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用const关键字const修饰变量这是最基本的一种用法,顾名思义,就是......
  • mysql is neither service nor target!?(suse12 sp5)
    今天想在自己的Suse虚拟机上安装mysql,安装好了并且初始化之后,一直无法启动mysql.cp/data/mysql/support-files/mysql.server/etc/init.d/mysqldchmod+x/etc/init.d/mysqldchkconfig--level35mysqldonchkconfig--addmysqldchkconfig--list1.servicemysqlstart;......