本章主要是讲解以下5个SQL的知识点
- 汇总分析
- 分组
- 对分组结果指定条件
- 用sql解决业务问题
- 对查询结果排序
- 如何看懂报错信息
汇总函数主要包括以下:
count 对某列的行数进行汇总
sum 对某列行数求和
avg求某列数据的平均值
max 求某列数据的最大值
min求某列数据的最小值
count 函数
count(列名):计算本列名(不含空值)的总个数
count(*): 计算本列名(含空值)的总个数
如以下例子:count(列名)

count(*)

sum(列名):对本列求和

avg(列名):对本列求平均值

max(列名):求本列的最大值
min (列名): 求本列的最小值

还有一个去重函数: distinct(列名),对(去重后)的名字计算


练习: 汇总分析
面试题1: 查询课程编号为“0002"的总成绩
解题: select 查询结果[总成绩:汇总函数sum]
from 从哪张表中查询数据[成绩表score]
where 查询条件[课程号是0002]

面试题2:查询选了课程的学生人数
解题思路:本题主要是查询了多少人选了课程select 学号,成绩表里学号有重复值需要去掉

分组
sql分组: group by

练习题
面试题目1: 查询各科成绩最高和最低的分

面试题2:查询每门课程被选秀的学生数

面试题3:查询男生,女生人数

对分组结果指定条件:having
如: 从男生女生组中,查询人数超过1人的组

总结: SQL的运行顺序
1) 先运行蓝框里的子句
2) select 子句

练习: 分组结果的条件
面试题1:查询平均成绩大于60分学生的学号和平均成绩

面试题2:查询至少选修两门课程的学生学号

面试题3: 查询同名同性学生名单并统计同名的人数

用 SQL解决业务问题
步骤1: 翻译成大白话
步骤2:写出分析思路
步骤3:写出对应的sql子句
练习:每门课程的平均成绩
select 查询结果(每门课程的课程号:分组,平均成绩:avg(成绩)]
from 从哪张表中查询数据[成绩表:course)
where 查询条件[没有]
group by 分组[每组课程:按课程号分组]
having 对分组结果指定条件[平均成绩>=80];

对查询结果排序用 order by
降序(desc): 从大到小
升序 (asc):从小到大

sql 运行顺序
1)先运行蓝框里的子句
2)select子句
3)最后运行红框里的子句

指定多个排序列名

空值(null)的排序

从查询结果中取出指定行: limit
-- 从查询结果中取出前2行数据

sql 运行顺序
1)先运行蓝框里的子句
2)select子句
3)最后运行红框里的子句

练习: 理解sql的运行速度
面试题:查询不及格的课程并按课程号从大到小排列

面试题: 查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排序

如何看懂报错信息
1.常见错误:在group by 中使用了select 里面的别名
2.常见错误: 在where 里使用了聚合函数
3.常见问题:字符串类型的数字
练习题目: sqlzoo
章节: select from nobel





练习章节:SUM and COUNT






