当前位置: 首页 > 编程笔记 >

MySql Group By对多个字段进行分组的实现方法

虞安康
2023-03-14
本文向大家介绍MySql Group By对多个字段进行分组的实现方法,包括了MySql Group By对多个字段进行分组的实现方法的使用技巧和注意事项,需要的朋友参考一下

在平时的开发任务中我们经常会用到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对多个字段进行分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍Java8进行多个字段分组统计的实例代码,包括了Java8进行多个字段分组统计的实例代码的使用技巧和注意事项,需要的朋友参考一下 Java8进行多个字段分组统计实现代码如下: 实例补充: 1.本实例其实可以用一句简单的sql去实现 由于我们项目数据库中时间存的是13位的时间戳 所以必须得转行成日期格式 才能进行分组 如下: 以上的就能实现多字段求和统计等功能 但我们老大考虑到查询速度

  • 我可以同时使用和吗?

  • 我正在和Kafka经纪人联系阿帕奇·Flink。 我随机收到了以下消息: 消息(时间戳=[…],索引=1,someData=[…]) 消息(时间戳=[…],索引=2,someData=[…]) 消息(时间戳=[…],索引=3,某些数据=[…]) 消息(时间戳=[…],索引=2,someData=[…]) 消息(时间戳=[…],索引=3,某些数据=[…]) 消息(时间戳=[…],索引=1,someD

  • 我们有带有复杂比较器的代码,这些代码已用于在整个应用程序中对 java 对象进行排序。从历史上看,这些方法都是有效的,但是自从在Java 7中引入TimSort以来,我们偶尔会发现比较方法违反了其总合同!错误。。取决于对象中保存的数据。 这是我们的传统比较器之一的示例(可能已有近十年的历史 - 请原谅狡猾): 所以,我想复制这个功能,但是使用一个可以安全地与TimSort一起使用的比较器。 从代码

  • 本文向大家介绍MySQL group by对单字分组序和多字段分组的方法讲解,包括了MySQL group by对单字分组序和多字段分组的方法讲解的使用技巧和注意事项,需要的朋友参考一下 我这里创建了一个 goods 表,先看下里面的数据: 1、根据s_id分组 这里使用了 group_concat()函数,主要目的是为了显示分组的详细信息 上面的根据单个字段分组很简单,把相同s_id的记录都归组

  • 本文向大家介绍php根据某字段对多维数组进行排序的方法,包括了php根据某字段对多维数组进行排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php根据某字段对多维数组进行排序的方法。分享给大家供大家参考。具体分析如下: 根据某字段对多维数组进行排序,在看到array_multisort方法的作用时突然想到,可以用来做这个方法 这段代码可实现根据field字段对数组进行排序 希望本

  • 本文向大家介绍python按照多个字符对字符串进行分割的方法,包括了python按照多个字符对字符串进行分割的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python按照多个字符对字符串进行分割的方法。分享给大家供大家参考。具体分析如下: 这段python代码通过这规则表达式对字符串进行分割,使用\w作为分割符,只要不是字母和数字的就会被分割开来。 输出结果如下 希望本文所述对大家

  • Hibernate5.2.10 查询DSL(jpa,apt)4.1.4 Spring Boot 1.5.6 Spring Data JPA(因此,使用存储库) 存储库扩展 选择以下meetupCampaign.id=x *meetupCampaign.ApprovalStatus=y的关联会议: *meetupCampaign.id=x *meetupCampaign.ApprovalStatus