本次需要学习有如下几个部分:
一、汇总分析
二、分组
三、对分组结果指定条件
四、用sql解决业务问题
五、对查询结果排序
六、如何看懂报错信息
下面为以上内容一一解答:
一、汇总
汇总包括如下函数
select count(教师姓名) from teacher; 其中count(教师姓名)即为输入,输出结果为3,不包括null
select count(*) from teacher; 其中count(*)即为输入,输出结果为4
其他的汇总代码书写方式同上
需要注意:
1.count函数求某列的行数时时不包括null,只有count(*)才是所有行数
2.sum函数和avg函数只能对数值类型的列计算
练习:
1.查询课程编号为‘0002'的总成绩
2.查询选了课程的学生人数
二、分组
先将数据分组,然后应用函数,最终组合结果。
sql运行顺序:
1.选择表:from student
2.定位行位置:where 出生日期 > '1990-01-01'
3.根据条件分组:group by 性别
4.应用函数输出结果:select 性别,count(*)
练习:
1.查询各科成绩最高和最低的分
2.查询每门课程被选修的学生数
3.查询男生、女生人数
三、对分组结果指定条件
只取出男生组:select 性别,count(*) from student group by 性别 having count(*) >1;
对分组指定查询条件中sql运行顺序:
from从哪张表中查找数据
where查询条件
group by 分组
having 对分组结果指定条件
select 查询结果
练习:
1.查询平均成绩大于60分学生的学号平均成绩
2.查询至少选修两门课程的学生学号
3.查询同名同姓学生名单并统计同名人数
四、用sql解决业务问题
对需要解决的问题进行翻译,翻译成大白话
练习:
如何计算每门课程的平均成绩并且平均成绩大于等于80分
五、对查询结果排序
order by是对查询结果进行排序,其中desc为降序,asc为升序
增加了排序的sql运行顺序
from从哪张表中查找数据
where查询条件
group by 分组
having 对分组结果指定条件
select 查询结果
order by 对查询结果排序
对列名使用排序,null也进行排序
从查询结果中取出指定行:limit
练习:
1.查询不及格的课程并按课程号从大到小排序
2.查询每门课程的平均成绩,结果按平均成绩升序排序。平均成绩相同时,按课程号降序排序。
六、如何看懂报错信息
在group by 中使用了select中的别名
在where中使用分组函数
sqlzoo练习SELECT from Nobel Tutorial/zhsqlzoo.netSUM and COUNT/zhsqlzoo.net