众所周知,group by 一个字段是根据这个字段进行分组,那么group by 多个字段的结果是什么呢?由前面的结论类比可以得到,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. 我们想统计每门课程有多少个学生报名,应用如下SQL:

    SELECT Subject, Count(*)
    FROM Subject_Selection
    GROUP BY Subject

    得到如下结果:

    Subject Count
    TB001 5
    KB114 2

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

  2. 那么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。

  1. 再比如有一个订单表,表中记录了所有支付过的订单

    Table: Order

    Product Buyer Spending
    D001 Todd 12.00
    D001 Todd 12.00
    D001 Todd 12.00
    D001 Lily 12.00
    D001 Lily 12.00
    D002 Todd 20.00
    D002 Todd 20.00

    现在我们想统计每个用户在每种商品上总共花了多少钱,执行如下SQL

    SELECT Product,Buyer, SUM(Spending)
    FROM `Order`
    GROUP BY Product, Buyer

    获得的结果如下:

    Product Buyer SUM
    D001 Todd 36.00
    D001 Lily 24.00
    D002 Todd 40.00

    本文参考:MYSQL GROUP BY 对多个字段进行分组

    如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/9732612.html

group by 多个字段的更多相关文章

  1. MySQL GROUP BY多个字段分组用法详解

    mysql语句中group by 很容易理解 是分组查询.比如 select sum(score) from user group by name 意思是查询每个人的分数总和但是, select su ...

  2. hive:(group by, having;order by)的使用;group by+多个字段,以及wiki说的group by两种使用限制验证

    hive> select * from app_data_stats_historical where os='1' group by dt limit 100; 出现结果如下: 2014-01 ...

  3. Distinct和Group by去除重复字段记录

    重复记录 有两个意义,一是完全重复的记录,也即所有字段均重复的记录 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易解决,使用 s ...

  4. 【转】group by多个字段理解

    来源:http://uule.iteye.com/blog/1569262 首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使 ...

  5. sql小技巧 group by datetime类型字段,只取其中的日期部分

    工作中经常会遇到,要在sql中查询报表,查询结果要求按照日期来罗列, 或按照天, 或按照月,年. 这个时候我们经常会苦恼,datetime是精确到毫秒的,如果单纯的group by datetime就 ...

  6. C# Linq to sql 实现 group by 统计多字段 返回多字段

    Linq to sql 使用group by 统计多个字段,然后返回多个字段的值,话不多说,直接上例子: where u.fy_no == fy_no orderby u.we_no group u  ...

  7. MySQL之——GROUP BY分组取字段最大值

    转载自:http://blog.csdn.net/l1028386804/article/details/54657412 假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: CREATE ...

  8. oracle group by 显示其他字段

    原先用 select key,max(value) from tbl group by key 查询出的结果,但是我要再多加一个TEST字段 根据网友的语句结合起来,以下是可以显示其他字段,并且考虑排 ...

  9. group by 两个字段

    group by 的简单说明:  group by 一般和聚合函数一起使用才有意义,比如 count sum avg等 使用group by的两个要素:   (1) 出现在select后面的字段 要么 ...

随机推荐

  1. chrome扩展程序----域名助手

    音乐分享: Future Islands - <Aladdin> 中年大叔的抖腿新专辑<The Far Field> ————————————————————————————— ...

  2. poj 3268 Silver Cow Party(最短路dijkstra)

    描述: One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the bi ...

  3. vscode插件解析-BookMark

    BookMark (书签):在编辑器中标记行并轻松跳转到它们. commands 书签:Toggle   标记/取消标记带书签的行 书签:Jump to Next  将光标向前移动到下面的书签 书签: ...

  4. Java的慢和稳

    对Java的了解还有待进一步提升,也没有做太多实践工作.只是把脑袋当成电脑,把Java放在里边不停地转,观察它的线路.得到的总体印象加上书本参考,认为Java的应用场景是慢和稳. 学编程语言总会接触到 ...

  5. Xamarin Layout属性(转)

    第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android: ...

  6. python之地基(一)

    想要建起一座高楼,最重要的就是建一个扎实地基,以下的内容就是地基的一部分,往你用心去阅读,去练习,去掌握. 一.变量 变量是什么?什么是变量?变量有什么好处? 变量是一种使用方便的占位符,用于引用计算 ...

  7. VIM 编辑器

    可视化模块 进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK) 2 移动光标上移或者下移,选中多行的开头,如下图所示 3 选择完毕后,按大写的的I键,此时下方会提示进入“ ...

  8. git20181122

    git 在线编辑器 http://www.mdeditor.com/git add commit diff log status 代码撤消 # git https://github.com/gyz41 ...

  9. spring boot+mybatis+quartz项目的搭建完整版

    1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...

  10. CF1093

    题解: D: 比较显然这个图得是二分图才行 然后每个二分图上的方案是$(2^a+2^b) (a,b是两种颜色的个数)$ E: 我tm就不该先写bitset的 正解和bitset都很好想 因为是个排列, ...