group by 多个字段

众所周知,group by 一个字段是根据这个字段进行分组,那么group by 多个字段的结果是什么呢?由前面的结论类比可以得到,group by 后跟多个子段就是根据多个字段进行分组
注:下面的例子是在网上找到的,仅供参考:

比如有一个学生选课表,表结构如下:
Table: Subject_Selection

SubjectSemesterAttendee
ITB0011John
ITB0011Bob
ITB0011Mickey
ITB0012Jenny
ITB0012James
MKB1141John
MKB1141Erica
  1. 我们想统计每门课程有多少个学生报名,应用如下SQL:

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

    得到如下结果:

    SubjectCount
    ITB0015
    MKB1142

    因为表里记录了有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)。

    得到的结果是:

    SubjectSemesterCount
    ITB00113
    ITB00122
    MKB11412

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

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

    ProductBuyerSpending
    PD001Todd12.00
    PD001Todd12.00
    PD001Todd12.00
    PD001Lily12.00
    PD001Lily12.00
    PD002Todd20.00
    PD002Todd20.00

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

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

    获得的结果如下:

    ProductBuyerSUM
    PD001Todd36.00
    PD001Lily24.00
    PD002Todd40.00

    本文参考:MYSQL GROUP BY 对多个字段进行分组
    如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/9732612.html

转载于:https://www.cnblogs.com/zhuchenglin/p/9732612.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值