MySQL使用group by分组后对每组操作


group by 操作

  • 分组能够将数据分成几个逻辑组,然后对其进行聚集操作

  • 前几天开发的时候遇到这样的一个问题,有一个vender-cost表:

mysql> select * from vendor-cost;
+———+————–+————–+———–+————+———-+———-+

vendor host vendor_id start_date cost

+———+————–+————–+———–+————+———-+———-+
| Tencent | ins-m9faipc4 | 100014390 | 2018-10 | 0.015456 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
| Tencent | ins-r76jxurv | 100015923 | 2018-10 | 0.284697 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
| Tencent | ins-ramdkuqz | 100015923 | 2018-10 | 0.021175 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
| Tencent | ins-q7o1dhsa | 100014390 | 2018-10 | 0.113501 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
| Tencent | ins-5xxrgd65 | 100015923 | 2018-10 | 0.058623 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
| Tencent | ins-79g28kn6 | 100015923 | 2018-10 | 0.03808 |
| ——- | ———— | ——— | ——- | ——- |
| | | | | |
| Tencent | ins-rw54ka4k | 100015923 | 2018-10 | 0.150595 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
| Tencent | ins-ggxrtm1v | 100015923 | 2018-10 | 0.068281 |
| ——- | ———— | ——— | ——- | ——– |
| | | | | |
为了统计出每个vendor_id的cost,就需要使用分组语句,将同一个vendor_id的cost求和:

select vendor_id, sum(cost) from vendor_cost group by vendor_id;

得出的结果就是每个vendor_id的总cost。

  • 还有一种group by的用法:GROUP BY X, Y意思是将所有具有相同X字段值和Y字段值的记录放到一个分组里。
  • 举个栗子:

现在有表格

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
1
2
3
SELECT Subject, Semester, Count(*)
FROM Subject_Selection
GROUP BY Subject, Semester
  • 得到的结果是:

得到的结果是:

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

-------------The End-------------

本文标题:MySQL使用group by分组后对每组操作

文章作者:cloud sjhan

发布时间:2018年11月05日 - 16:11

最后更新:2018年11月06日 - 10:11

原始链接:https://cloudsjhan.github.io/2018/11/05/MySQL使用group-by分组后对每组操作/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

cloud sjhan wechat
subscribe to my blog by scanning my public wechat account
坚持原创技术分享,您的支持将鼓励我继续创作!
0%
;