在平时的开发任务中我们经常会用到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
我们想统计每门课程有多少个学生报名,应用如下sql:
select subject, count(*)
from subject_selection
group by subject
得到如下结果:
subject count
------------------------------
itb001 5
mkb114 2
因为表里记录了有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
上面sql的意思是,对subject_selection表中的数据进行分组,将具有相同subject和semester字段值的记录放到同一个分组里去, 然后对每个分组中的数据应用聚合函数(count,sum, avg,etc)。
得到的结果是:
subject semester count
------------------------------
itb001 1 3
itb001 2 2
mkb114 1 2
从表中的记录我们可以看出这个分组结果是正确的有3个学生在第一学期选择了itb001, 2个学生在第二学期选择了itb001,还有两个学生在第一学期选择了mkb114, 没人在第二学期选择mkb114。
以上这篇mysql group by 对多个字段进行分组操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。
希望与广大网友互动??
点此进行留言吧!