聚合函数以及分组,过滤

 

聚合函数

 

不吹不黑,这个是真的比上一个类函数常用~~~

函数名称描述
count() 计数
sum() 求和
avg() 平均值
max() 最大值
min() 最小值
......  

 



-- ======================聚合函数=======================

SELECT COUNT(`borndate`) FROM `student`;    -- count(字段),会忽略所有的null值
SELECT COUNT(*) FROM `student`; -- count(*),不会忽略null值
SELECT COUNT(1) FROM `student`; -- count(1),不会忽略null值
-- count(*),count(1),本质上都是计算行数,其实差不多
-- 这三个都可以统计表中的数据(想要查询一个表中有多少条记录,就使用count())

SELECT SUM(`studentresult`) AS '总和' FROM result
SELECT AVG(`studentresult`) AS '平均分' FROM result
SELECT MAX(`studentresult`) AS '最高分' FROM result
SELECT MIN(`studentresult`) AS '最低分' FROM result

 

举个例子说明一下:

干脆把分组和过滤加一起分析


-- 查询不同课程的平均分,最高分,最低分,平均分大于80
-- 核心:根据不同的课程分组
SELECT ANY_VALUE(`subjectname`),  -- 高版本的SQLyog需要加'ANY_VALUE'这个函数
AVG(`studentresult`) AS '平均分',
MAX(`studentresult`) AS '最高分',
MIN(`studentresult`) AS '最低分'
FROM `result` AS r
INNER JOIN `subject` AS sub
ON r.`subjectno`=sub.`subjectno`
GROUP BY r.`subjectno`    -- 通过什么字段来分组

HAVING '最低分' > 10   -- 不加这句话就可以查询出来结果,加了反而却成了空表了



-- 我感觉可能是数据太少的原因,要是有知道为什么的朋友可以帮我分析一下啦~

 

SELECT完整的语法:

 

 

 

 

 

posted @ 2021-09-22 13:32  屯子里唯一的架构师  阅读(65)  评论(0编辑  收藏  举报