您的位置:首页 > 数据库 > MySQL

mysql group by 对多个字段进行分组

2018-01-27 15:54 399 查看


mysql group by 对多个字段进行分组


转载自https://segmentfault.com/a/1190000006821331


在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。比如有一个学生选课表,表结构如下:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica
1
2
3
4
5
6
7
8
9
10
11


我们想统计每门课程有多少个学生报名,应用如下SQL:

SELECT Subject, Count(*)
FROM Subject_Selection
GROUP BY Subject
1
2
3


得到如下结果:

Subject    Count
------------------------------
ITB001     5
MKB114     2
1
2
3
4


因为表里记录了有5个学生选择ITB001,2个学生选择了MKB114。


产生这个结果的原因是:


GROUP BY X意思是将所有具有相同X字段值的记录放到一个分组里。


那么GROUP BY X, Y呢?


GROUP BY X, Y意思是将所有具有相同X字段值和Y字段值的记录放到一个分组里。


我们下面再接着要求统计出每门学科每个学期有多少人选择,应用如下SQL:

SELECT Subject, Semester, Count(*)
FROM Subject_Selection
GROUP BY Subject, Semester
1
2
3


上面SQL的意思是,对Subject_Selection表中的数据进行分组,将具有相同Subject和Semester字段值的记录放到同一个分组里去, 然后对每个分组中的数据应用聚合函数(COUNT,SUM, AVG,etc)。


得到的结果是:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2
1
2
3
4
5


从表中的记录我们可以看出这个分组结果是正确的有3个学生在第一学期选择了ITB001, 2个学生在第二学期选择了ITB001,还有两个学生在第一学期选择了MKB114, 没人在第二学期选择MKB114。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: