汇总分析

函数的3个功能:1、功能;2、输入(参数);3、输出(返回值)

汇总函数:

count:求某列的行数;

sum:对某列数据求和(只能对数值类型的列计算);

avg:求某列数据的平均值(只能对数值类型的列计算);

max:求某列数据的最大值;

min:求某列数据的最小值。




sql server拆分表 sql拆分函数_SQL


练习1:查询课程表好为“0002”的总成绩;

select sum(成绩)

from score

where 课程号='0002';


sql server拆分表 sql拆分函数_sql server拆分表_02


练习2:查询选了课程的学生人数;

select count(distinct 学号) as 学生人数

from score;


sql server拆分表 sql拆分函数_升序_03


分组

SQL分组:group by

分析拆解:数据分组-->应用函数-->组合结果


sql server拆分表 sql拆分函数_sql 拆解函数_04


SQL的运行顺序:from-->where-->group by-->select


sql server拆分表 sql拆分函数_sql server拆分表_05


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

select 课程号,max(成绩) as 最高分,min(成绩) as 最低分

from score

group by 课程号;


sql server拆分表 sql拆分函数_sql 拆解函数_06


练习2:查询每门课程被选修的学生数;

SELECT 课程号,count(学号) as 学生人数

FROM score

GROUP BY 课程号;


sql server拆分表 sql拆分函数_SQL_07


练习3:查询男生、女生人数;

SELECT 性别,count(学号) as 学生人数

FROM student

GROUP BY 性别;


sql server拆分表 sql拆分函数_sql 拆解函数_08


对分组结果指定条件

对分组结果指定条件:having

只取出男生组时,此处多运行一个指定条件:having count(*)>1;


sql server拆分表 sql拆分函数_数据_09


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

SELECT 学号,avg(成绩) as 平均成绩

FROM score

GROUP BY 学号

having AVG (成绩)>60;


sql server拆分表 sql拆分函数_sql 拆解函数_10


练习2:查询至少选修两门课程的学生学号;

SELECT 学号,count(课程号) as 选修数量

FROM score

GROUP BY 学号

having count(课程号)>=2;


sql server拆分表 sql拆分函数_sql server拆分表_11


练习3:查询同名同姓学生名单并统计同名人数;

SELECT 姓名,count(学号) as 同名人数

FROM student

GROUP BY 姓名

having count(学号)>=2;


sql server拆分表 sql拆分函数_sql 拆解函数_12


用SQL解决业务问题

翻译成大白话-->写出分析思路-->写出对应的SQL子句


sql server拆分表 sql拆分函数_数据_13


练习1:如何计算每门课程的平均成绩,并且平均成绩大于等于80分;

SELECT 课程号,avg(成绩) as 平均成绩

from score

group by 课程号

having avg(成绩)>=80;


sql server拆分表 sql拆分函数_SQL_14


sql server拆分表 sql拆分函数_升序_15


sql server拆分表 sql拆分函数_升序_16


对查询结果排序

降序:desc;

升序:asc;


sql server拆分表 sql拆分函数_sql server拆分表_17


指定多个排序列名;


sql server拆分表 sql拆分函数_升序_18


空值(null)的排序;


sql server拆分表 sql拆分函数_sql 拆解函数_19


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


sql server拆分表 sql拆分函数_数据_20


SQL的运行顺序:

1、线运行蓝框里的子句;

2、select子句;

3、最后运行红框里的子句。


sql server拆分表 sql拆分函数_SQL_21


练习1:查询不及格的课程并按课程号从大到小排列;

SELECT 课程号

from score

where 成绩<60

order by 课程号 desc;


sql server拆分表 sql拆分函数_sql server拆分表_22


练习2:查询每门课程的平均成绩,结果按平均成绩升序排列。平均成绩相同时,按课程号降序排列;

SELECT 课程号,avg(成绩) as 平均成绩

from score

group by 课程号

order by 平均成绩 asc,课程号 desc;


sql server拆分表 sql拆分函数_升序_23


如何看懂报错信息

常见错误1:在group by中使用了select里的别名;


sql server拆分表 sql拆分函数_数据_24


常见错误2:在where中使用聚合函数;


sql server拆分表 sql拆分函数_SQL_25


常见问题:字符串类型的数字;


sql server拆分表 sql拆分函数_升序_26


总结


sql server拆分表 sql拆分函数_SQL_27