汇总函数
常用汇总分析函数count sum avg max min
所有汇总函数会除去空值,count(*)所有非空值统计;
删除重复值:汇总函数(distinct 列名)
练习:汇总分析
查询课程编号为”0002“的总成绩
![81c0deed17f4ff662145ea7ffefe32b1.png](https://i-blog.csdnimg.cn/blog_migrate/930fe32b67c277aaf3802825b7dd5898.jpeg)
查询选了课程的学生人数
![dbd3ef9c43b0fedb4f914a86963aa31d.png](https://i-blog.csdnimg.cn/blog_migrate/9213c12c808780921740bf4d19b079e3.jpeg)
数据分组
分析方法:1.数据分组group by 2.汇总函数count 3.组合结果
运行顺序:
4 select
1 from student
2 where
3 group by
练习:分组
查询各科成绩最高和最低的分
![2178292f93277be35c761138373e10f1.png](https://i-blog.csdnimg.cn/blog_migrate/c72aba6f33ec28bab096f516a57d2f1c.jpeg)
查询每门课程被选修的学生数
![937b03fc619b2e936f8d9576cbfe7caf.png](https://i-blog.csdnimg.cn/blog_migrate/648e8fd25580943c4db358868d19456d.jpeg)
查询男生/女生的人数
![ba4bc2374a8911ca3e3511b5db2912d2.png](https://i-blog.csdnimg.cn/blog_migrate/ae50efe9d03ba788596098ee604a3d15.jpeg)
对分组结果指定条件having
sql运行顺序
1)先运行from后的子句
2)select子句
select 查询结果
from 从哪张表中查找数据
where查询条件
group by 分组
having 对分组结果指定条件
练习:分组结果的条件
查询平均成绩大于60分学生的学号和平均成绩
![b457e6ad9ec00058d5f7efb944b3fa77.png](https://i-blog.csdnimg.cn/blog_migrate/05d4cb21d7ee79f1b0e0f172f8d4fcc8.jpeg)
查询至少选修两门课程的学生学号
![c72518203d33da3b0f3ae99ab08b44ee.png](https://i-blog.csdnimg.cn/blog_migrate/f379a6192209d4055c16a63db637f2a0.jpeg)
查询同名同性学生名单并统计同名人数
![c07991d39cc2f5783a86a51d0089d23d.png](https://i-blog.csdnimg.cn/blog_migrate/c4bb58c40556792f0b9537efeb2a807e.jpeg)
用SQL解决业务问题
1.翻译成大白话
2.写出分析思路
3.写出对应的SQL思路
练习:每门课程的平均成绩
如何计算门课程的平均成绩并且平均成绩大于等于80分
第一步:从score表中取出
第二步:将成绩按课程进行分组
第三步:计算各课程的平均成绩,并筛选出平均成绩大于等于80的课程
第四步:选择呈现课程及满足条件的平均成绩
![839fa0e0baacd328d3401173700fdac3.png](https://i-blog.csdnimg.cn/blog_migrate/c50ac3df11a8714814e83d786e38489b.jpeg)
排序
order by排序语句最后运行
空值的排序(升序)
select *
from teacher
order by 教师姓名;
练习:理解sql的运行顺序
查询不及格的课程并按课程号从大到小排列
![d3ed34604fddc3c8e1cb49f77ff92713.png](https://i-blog.csdnimg.cn/blog_migrate/52da8920491d99edf6fa0ffbef3e01dd.jpeg)
查询每门课程的平均成绩,结果按平均成绩升序。平均成绩相同时,按课程号降序排列
![d02f36df3c57336489d10f6def099717.png](https://i-blog.csdnimg.cn/blog_migrate/803c1c5341f00394044b42acc3327db5.jpeg)
先从score表中按课程号分组,再筛选出按课程号的平均成绩,再按平均成绩升序排列,如果平均成绩相同,再按课程号降序排列
常见错误;
group by,having子句中不能用别名,因为select还没运行
数据类型尤其字符串,如果进行排序时出现错误,先统一数据数值类型再排序
![5d714f95e5ec6e78d143ef16686dcf2a.png](https://i-blog.csdnimg.cn/blog_migrate/ae519a2a447e7f1b8936d0be7ed6c72f.jpeg)
sqlzoo练习
![d9a0576451394b46b2510f3c21f177c4.png](https://i-blog.csdnimg.cn/blog_migrate/ee84ce8bf8fe18af843c83513e067484.jpeg)