汇总分析
原先建立的数据集情况:
student(学号,姓名,出生日期,性别)
score(学号,课程号,成绩)
course(课程号,课程名称,教师号)
teacher(教师号,教师姓名)
![311d7d89e029473e736372abbd4638a9.png](https://img-blog.csdnimg.cn/img_convert/311d7d89e029473e736372abbd4638a9.png)
- 函数:输入、功能、输出
1.count,求某列的行数,
select
(注意,Null不计入)
select count(*) from teacher;
2.sum,某列数据求和
select sum(成绩) from score;
3.avg,求某列数据的平均值
select avg(成绩) from score;
4.max,求某列数据的最大值
5.min,求某列数据的最小值
select max(成绩),min(成绩) from score;
6.加入distinct可删除重复值,再计算。
select count(distinct 姓名) from student;
练习:查询课程编号为“0002”的总成绩
select sum(成绩) from score where 课程号='0002';
练习:查询选了课程的学生人数
select count(distinct 学号) from score;
运行结果展示:
![5b8e2daa1c453c37da6c8fb9b5fff1da.png](https://img-blog.csdnimg.cn/img_convert/5b8e2daa1c453c37da6c8fb9b5fff1da.png)
![df30a359546103037953beeaa2ddcedc.png](https://img-blog.csdnimg.cn/img_convert/df30a359546103037953beeaa2ddcedc.png)
![e7f3e2b8b574e400a962fe1230c2808a.png](https://img-blog.csdnimg.cn/img_convert/e7f3e2b8b574e400a962fe1230c2808a.png)
![ff7d4563e14c6f2afb99f2fd5cd195cb.png](https://img-blog.csdnimg.cn/img_convert/ff7d4563e14c6f2afb99f2fd5cd195cb.png)
![947de43eb6293740ee12ea6f9d815c41.png](https://img-blog.csdnimg.cn/img_convert/947de43eb6293740ee12ea6f9d815c41.png)
![fb382eb7541a695e8d297de567e94cc2.png](https://img-blog.csdnimg.cn/img_convert/fb382eb7541a695e8d297de567e94cc2.png)
![c88902590fbe8fd23d830eeb005fb291.png](https://img-blog.csdnimg.cn/img_convert/c88902590fbe8fd23d830eeb005fb291.png)
![d5f8ae17c4d8ca7c2a344daf376ff12d.png](https://img-blog.csdnimg.cn/img_convert/d5f8ae17c4d8ca7c2a344daf376ff12d.png)
![ad321c30ab45f802484ff62f6bc33fd3.png](https://img-blog.csdnimg.cn/img_convert/ad321c30ab45f802484ff62f6bc33fd3.png)
- 分组
1.分析方法:数据分组→应用函数→组合结果
select 性别,count(*) from student group by 性别;
2.SQL运行顺序:from(来源)where(条件)group by(分组)select(应用函数、组合结果和筛选指定列)
select 性别,count(*) from student where 出生日期>'1990-01-01' group by 性别;
练习:查询各学科成绩最高和最低的分
select 课程号,max(成绩),min(成绩) from score group by 课程号;
练习:查询每门课程被选修的学生数
select 课程号,count(distinct 学号) from score group by 课程号;
练习:查询男生、女生数
select 性别,count(*) from student group by 性别;
运行结果展示:
![12b8ffadb3d453eac990e73309f3e08b.png](https://img-blog.csdnimg.cn/img_convert/12b8ffadb3d453eac990e73309f3e08b.png)
![68daec0f1cb4dd2536dde9f53466a6dc.png](https://img-blog.csdnimg.cn/img_convert/68daec0f1cb4dd2536dde9f53466a6dc.png)
![772d145e7e2f4cb2b6fa0f1e400f00b7.png](https://img-blog.csdnimg.cn/img_convert/772d145e7e2f4cb2b6fa0f1e400f00b7.png)
![bd4df9abc264027b0693af41b6a4a403.png](https://img-blog.csdnimg.cn/img_convert/bd4df9abc264027b0693af41b6a4a403.png)
![0521a99c2f232f756bb90670fff792d0.png](https://img-blog.csdnimg.cn/img_convert/0521a99c2f232f756bb90670fff792d0.png)
![bbce2a679abc83f5a3e1f22496517b0f.png](https://img-blog.csdnimg.cn/img_convert/bbce2a679abc83f5a3e1f22496517b0f.png)
- 对分组结果指定条件
1.where字句只能筛选行的条件,而having字句可以指定分组后的条件
select 性别,count(*) from student group by 性别 having count(*)>1;
2.SQL运行顺序:from(来源)where(条件)group by(分组)having(对分组结果指定条件)select(应用函数、组合结果和筛选指定列)
练习:查询平均成绩大于60分的学生学号和平均成绩
select 学号,avg(成绩)as 平均成绩 from score group by 学号 having avg(成绩)>60;
练习:查询至少选修两门课程的学生学号
select 学号 from score group by 学号 having count(课程号)>=2;
练习:查询同名同姓学生名单并统计同名人数
select 姓名,count(*)as 同名人数 from student group by 姓名 having count(*)>1;
运行结果展示:
![b0104c9d01b3442ad7d18d9e45b237db.png](https://img-blog.csdnimg.cn/img_convert/b0104c9d01b3442ad7d18d9e45b237db.png)
![4e7e33f4e9d0486789250b56c67dbc60.png](https://img-blog.csdnimg.cn/img_convert/4e7e33f4e9d0486789250b56c67dbc60.png)
![826b31c89fa0da985244943c63710ced.png](https://img-blog.csdnimg.cn/img_convert/826b31c89fa0da985244943c63710ced.png)
![d657452a17a6400d6fc90ae83cad8364.png](https://img-blog.csdnimg.cn/img_convert/d657452a17a6400d6fc90ae83cad8364.png)
![021c9bda0b7d1e2dda5d93a3afd37254.png](https://img-blog.csdnimg.cn/img_convert/021c9bda0b7d1e2dda5d93a3afd37254.png)
- 用SQL解决业务问题
1.翻译成大白话→写出分析思路→写出相应的sql字句
2.计算各科的平均成绩,分组课程,计算平均成绩
select 查询结果:课程号(分组)、平均成绩avg