相干mysql视频教程引荐:《mysql教程》
在日常平凡的开辟使命中我们常常会用到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。
再比方有一个定单表,表中纪录了一切支付过的定单
Table: Order
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对表中的数据举行分组时,
GROUP BY X意义是将一切具有雷同X字段值的纪录放到一个分组里,
GROUP BY X, Y意义是将一切具有雷同X字段值和Y字段值的纪录放到一个分组里。
以上就是MySql中运用Group By对多个字段举行分组的要领的细致内容,更多请关注ki4网别的相干文章!