练习一、汇总分析
1、常见的几个函数及作用:
每种汇总函数的实际操作语句如下:
(1)count函数:
count函数加列名就可以求出这个列名有多少行,需要注意的是,如果本列中存在空值的话,那count函数会先去掉空值然后再计算,当列中有空值存在,而我们又想把空值也计算的话那就在count函数中加入星号(*),这样就能把空值计算进去。count函数的空值计算如下:
教师姓名中有空值,所以函数输出结果是3在count函数输入*表示计算所有行,包括空值,所以输出结果为4(2 )求和函数sum:
(3)平均值函数avg:
(4)最大值函数max和最小值函数min:
最后以一张图来说明这5个函数的注意事项:
当count函数使用星号时表示对所有列名进行计算求值,求和函数(sum)及求平均值函数(avg)只能对数值类型的列进行计算,不是数值的话会报错,而其他的函数对所有类型的列都可以进行计算。
2、汇总练习:
练习二、分组及常见面试题:
1、分组group by:以学生表中的性别来分组做个例子,sql的语句如下:
SQL的运行顺序如下:
先运行途中蓝框中的子句,蓝框中的子句按照书写顺序运行,最后运行select子句。
2、面试习题解答如下:
怎样判断一个题目是否需要分组分析?当题目中出现’每‘’各‘等词时表示需要分组计算。
练习三、对分组结果指定条件及面试练习:
1、对分组结果指定条件having:
SQL的运行顺序:
2、面试习题练习解答:
练习四、计算每门课程的平均成绩且平均成绩大于等于80分:
如何使用SQL解决业务问题:
练习五、对查询结果排序:
1、排序(order by):
指定多个排序中按照从做往右顺序排序,如上图,先按照成绩升序的排序方式,当成绩出现一样时再按照课程号进行降序排序
当有空值排序的时候,空值都会排在最前面。
当查询结果数据太大,而我们只需要看其中某些数据时,需要用到limit的语句。
2、面试习题解答:
练习六、SQL的报错类型:
对分组指定条件having使用select子句的别名系统会报错,因为having的子句在select子句之前运行,所以having不能使用select的别名。
在where中不能使用函数count函数,否则系统会报错。
最后附上老师的课后总结图片,这张SQL的运行顺序要牢记。
SQLZOO的练习答案:
在上图中因为名字中也含有单引号,此时我们需要用到转义字符转换才能运行,否则会报错。常见转义字符:
这道题的SQL语句解释如下:subject in ('Physics','Chemistry')返回值(0或者1),会对每一个subject做一个if的判断,再用order by 将这些值排序在下面。
SQLZOO汇总分析答案:
总结:本章的知识点蛮多的,而且对SQL语句的理解需要细致,在练习中也发现了有时自己对题目的理解不是很清楚,特别是在分组练习中,有时候不是很明白到底需不需要进行分组,以至于做出来的答案会跟老师的不一样,以后多强化一下自己这方面的练习。