常见聚合函数

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

 

CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,
studentName VARCHAR(20),
grade INT 
)DEFAULT CHARSET=utf8;
INSERT INTO t_student(studentName,grade)VALUES ('张三',90);
INSERT INTO t_student(studentName,grade)VALUES ('李四',70);
INSERT INTO t_student(studentName,grade)VALUES ('王麻',70);
INSERT INTO t_student(studentName,grade)VALUES ('赵二',75);
INSERT INTO t_student(studentName,grade)VALUES ('柳五',86);
INSERT INTO t_student(studentName,grade)VALUES ('陶渊明',45);
INSERT INTO t_student(studentName,grade)VALUES ('何元庆',60);
INSERT INTO t_student(studentName,grade)VALUES ('何元',60);
INSERT INTO t_student(studentName,grade)VALUES ('何df',100);
ALTER TABLE t_student ADD className VARCHAR(20);
UPDATE t_student SET className='GT01' WHERE id>5;
UPDATE t_student SET className='GT02' WHERE id<=5
SELECT * FROM t_student

-- 统计所有学生的总分
SELECT SUM(grade) total FROM t_student;

-- 统计学生总数
SELECT COUNT(*) FROM t_student;

-- 统计参考人数,如果指定列位null,不参与统计
SELECT COUNT(grade) FROM t_student;

-- 去掉指定列重复的记录
SELECT  COUNT(DISTINCT grade) FROM t_student;

-- 统计参考人数(去除null列)平均分
SELECT AVG(grade) FROM t_student;

-- 统计所有学生平均分,没参加考试的学生为0分
SELECT SUM(grade)/COUNT(*) FROM t_student;

-- 统计最高分和最低分

SELECT  MAX(grade),MIN(grade) FROM t_student; 

-- where 后面不能跟聚合函数
SELECT studentName,grade FROM t_student WHERE grade =(SELECT MAX(grade) FROM t_student)

-- 将className相同的记录分成一组,然后再进行统计
SELECT className,COUNT(*) FROM t_student GROUP BY className

-- 统计所有班级及格的人数

SELECT className,COUNT(grade) FROM t_student WHERE grade>=60 GROUP BY className

-- 在有分组的SQL中,投影的列就会有限制。要求select 中的列必须满足以下两个条件之一,否则就是无效的投影。
-- 1、使用了聚合函数的列  2、该列在GROUP BY字句中

-- HAVING 和WHERE区别:二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数。HAVING 是运行在分组后,只能用做聚合函数的过滤。

-- 统计班级平均分在70分以上的班级,HAVING 过滤分组之后的数据,只能加在group by后面
SELECT className ,AVG(grade) FROM t_student GROUP BY className HAVING AVG(grade)>=70

-- SQL 的执行顺序:
-- 1、执行from
-- 2、执行where条件过滤
-- 3、group by 分组
-- 4、执行select投影列
-- 5、having条件过滤
-- 6、执行order by排序

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值