一、汇总函数:
1、COUNT:COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入);
语法:SELECT COUNT(column_name) FROM table_name
COUNT(*) 函数返回表中的记录数:可记录所有的列,包括null值;
2、sum(列名):只能对某列数据求和;且只能对数值类型列计算;
3、avg(列名):求某列平均值;且只能对数值类型列计算;
4、max(列名):最大值;min(列名):最小值;
5、sql运行顺序:from-where-groupby-having-select-orderby-limit
5、练习:
(1)求和:
(2)计数
二、分组函数
1、分组函数:group by语句;
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
语法 ④ SELECT column_name, aggregate_function(column_name)
① FROM table_name
② WHERE column_name operator value
③ GROUP BY column_name
①②③④,表明sql运行顺序;
2、练习:
(1)查找最高,最低分;
(2)查询每门课程被选修的学生数
(3)查询男生,女生人数
三、对分组结果指定条件;
having函数:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
语法:SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
练习:
(1)查询平均成绩大于60分的学生;
(2)查询至少选修两门课程的学生学号
(3)查询同名学生名单并统计人数
四、sql解决业务问题
核心:翻译目标→写出分析思路→写出对应sql语句;
1、求每门课程平均成绩;
2、平均成绩大于80;
五、对查询结果排序;
1、order by;用于对结果集进行排序。语句默认按照升序对记录进行排序。
desc:降序;asc:升序;
2、limit:从查询结果中取出制定行;
3、练习:
(1)筛选出成绩小于60的课程,并倒叙排列;
(2)筛选出成绩大于60的课程,并倒叙排列;
3、查询平均成绩,并且将成绩正序排列,成绩相同时,课程号倒叙排列
六、看懂报错信息;
1、常见错误:
(1)group by中使用select的别称;
(2)where 中使用聚合函数;
(3)字符串类型的数字;
2、总结:
sql运行顺序:from-where-groupby-having-select-orderby-limit
七、sqlzoo联系:
1、错误分析:
① in用法:
IN 操作符允许我们在 WHERE 子句中规定多个值。
SQL IN 语法:in 后面直接用英文逗号(,d)隔开;
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
(2)单引号,跳脱字符,需要用双引号替代;
(3)subject IN ('Chemistry','Physics')can be used as a value - it will be0or1.
2、二次训练
SUM and COUNT:
错误分析:运行顺序错误;where 和having 运行条件需要熟练;