在平时的开发任务中我们经常会用到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_SelectionGROUP 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_SelectionGROUP BY Subject, Semester

得到的结果是:

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

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

更多相关文章

  1. python list.sort()根据多个关键字排序的方法实现
  2. android 当系统存在多个Launcher时,如何设置开机自动进入默认的La
  3. Android(安卓)初识Retrofit
  4. 【android】监听网络变化连续多个广播的问题解决
  5. android图片上传springMvc
  6. android 之simpleAdapter详解
  7. android sqlite 一次创建多个表
  8. Android(安卓)微博登录
  9. Android中读取电话本Contacts联系人的所有电话号信息

随机推荐

  1. android 怎样为多媒体文件生成缩略图
  2. android客户端向服务端传汉字乱码问题
  3. [转]Android虚拟电源管理驱动
  4. android 布局总结
  5. 用Eclipse开发第一个Android应用程序Hell
  6. 如何让Android中的控件显示居中?
  7. android SQLite数据库封装
  8. Android Native C development (2) -- fr
  9. android知识点
  10. Android进程so注入Hook java方法