group by 多个字段

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

好比有一个学生选课表,表结构以下:
Table: Subject_Selectionsegmentfault

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

    获得以下结果:code

    Subject Count
    ITB001 5
    MKB114 2

    由于表里记录了有5个学生选择ITB001,2个学生选择了MKB114。htm

  2. 那么GROUP BY X, Y呢?
    GROUP BY X, Y意思是将全部具备相同X字段值和Y字段值的记录放到一个分组里。
    例:要求统计出每门学科每一个学期有多少人选择,应用以下SQL:blog

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

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

    获得的结果是:io

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

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

  3. 再好比有一个订单表,表中记录了全部支付过的订单
    Table: Orderclass

    Product Buyer Spending
    PD001 Todd 12.00
    PD001 Todd 12.00
    PD001 Todd 12.00
    PD001 Lily 12.00
    PD001 Lily 12.00
    PD002 Todd 20.00
    PD002 Todd 20.00

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

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

    得到的结果以下:

    Product Buyer SUM
    PD001 Todd 36.00
    PD001 Lily 24.00
    PD002 Todd 40.00

    本文参考:MYSQL GROUP BY 对多个字段进行分组
    如需转载请注明出处:http://www.javashuo.com/article/p-xvevudyd-he.html

相关文章
相关标签/搜索