2020年3月24日 星期二
大纲:
- 汇总分析;
- 分组;
- 对分组结果指定条件;
- 用sql解决业务问题;
- 对查询结果排序;
- 如何看懂报错信息。
1 汇总分析

count:求某列的行数;
计算教师姓名这一列非空值的行数:select count(教师姓名) from teacher;
计算所有的行数:select count(*) from teacher;
select count(成绩) from score; 计算score表格成绩列有多少行
select count(distinct 成绩) from score; 计算score表格成绩列有多少不重复值的行

sum:某列数值相加的总和,只能对数值类型进行计算。
select sum(成绩) from score; 对表格score的成绩一列求和;
avg:求平均值,只能对数值类型进行计算;
select avg(成绩) from score; 对表格score的成绩一列求和;均值;
max,min:最大,最小值
select max(成绩) ,min(成绩)from score;

练习:



2 sql分组:group by
分组计算的原理

对应的sql的语句



Sql的运行顺序:
1.先运行蓝框里的子句
2.Select子句

练习:
查询各科成绩的最高和最低分

查询每门课程被选修的学生数

查询男生、女生人数

查询每个学生的最高、最低分

3 对分组结果指定条件
having 对分组的结果再加条件限制
where 指定行的条件

Sql的运行顺序:
1.先运行蓝框里的子句
2.Select子句

练习:
查询平均成绩大于60分学生的学号和平均成绩

查询至少选修两门课程的学生学号

查询同名同姓学生名单并统计同名人数

4 用sql解决业务问题
翻译成大白话——写出分析思路——写出对应的sql子句
两个栗子:



5 对查询结果排序——order by & limit
order by
降序desc:从大到小
升序asc :从小到大

特殊情况:
指定多个列名进行排序,从左到右(sql的):即同时有多个升序asc、降序desc。

空值null的排序:优先,可用于空值数据的筛除。

limit:从查询结果中取出指定行
练习:





7 如何看懂报错信息
错误1:group by中使用select中定义的别名
疑问sql是先运行group by子句,此时sql无法识别别名是什么。

错误2:在where中使用聚合函数
where中不能使用聚合函数

错误3:字符串类型的数字
为什么数据列的最大值与sql运算值不一样??
表中填充数值时,如果数值类型选择错误,再对数值进行运算,就会按数值类型进行运算

最后记住一张表:

sqlzoo练习
如果字符串有包含特殊符号




因为题目要求这两个科目排在后面,所以引入subject in ('Physics','Chemistry'),subject in ('Physics','Chemistry')返回值(0或者1),会对每一个subject做一个if的判断,有的是1,没有的是0,再用order by把这些值排序在下面。0排在前面,1排在后面。
本文详细介绍了SQL中的汇总分析,包括count、sum、avg、max、min等函数的使用,以及如何进行分组(group by)、对分组结果指定条件(having)和排序(order by)。此外,还探讨了如何理解和解决SQL运行过程中的常见错误。
3152

被折叠的 条评论
为什么被折叠?



