当前位置:首页 > 日记 > 正文

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

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

在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。比如有一个学生选课表,表结构如下:

Table: Subject_SelectionSubject  Semester  Attendee---------------------------------ITB001  1     JohnITB001  1     BobITB001  1     MickeyITB001  2     JennyITB001  2     JamesMKB114  1     JohnMKB114  1     Erica

我们想统计每门课程有多少个学生报名,应用如下SQL:

SELECT Subject, Count(*)FROM Subject_SelectionGROUP BY Subject

得到如下结果:

Subject  Count------------------------------ITB001   5MKB114   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_SelectionGROUP BY Subject, Semester

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

得到的结果是:

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

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

还有两个学生在第一学期选择了MKB114, 没人在第二学期选择MKB114。

再比如有一个订单表,表中记录了所有支付过的订单

Table: Order

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

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

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

获得的结果如下:

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

总结:

在MYSQL中使用GROUP BY对表中的数据进行分组时,

GROUP BY X意思是将所有具有相同X字段值的记录放到一个分组里,

GROUP BY X, Y意思是将所有具有相同X字段值和Y字段值的记录放到一个分组里。

以上所述是小编给大家介绍的MySql Group By对多个字段进行分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

php实现给二维数组中所有一维数组

php实现给二维数组中所有一维数组

二维数组,方法,一维数组,电脑软件,php,本文实例讲述了php实现给二维数组中所有一维数组添加值的方法。分享给大家供大家参考,具体如下:给二维数组中所有的一维数组添加值(索引和关联)$shop = array( 0=>array(0=>1,1=>2,2=>3,3=>4) ,1=>arr…

如何查询QQ登录地址记录

如何查询QQ登录地址记录

登录,地址,查询,电脑软件,QQ,欢迎大家来。很多朋友不知道QQ登陆地址可以查询,今天,小编辑一起分享,一起分享。 事实上,要知道QQ被盗是很简单的,我们只需要查询QQ日志记录,对于QQ登录记录查询可能很多朋友都不擅长的菜鸟,事实上,查询是存在的,并且不…

10个值得深思的PHP面试题

10个值得深思的PHP面试题

面试题,电脑软件,PHP,文章所罗列的问题虽然看似简单,但是每个背后都涵盖了一个或几个大家容易忽视的基础知识点,希望能够帮助到你的面试和平时工作。Q1第一个问题关于弱类型$str1 = 'yabadabadoo';$str2 = 'yaba';if (strpos($str1,$str2…

解除excel锁定单元格的方法步骤图

解除excel锁定单元格的方法步骤图

锁定,方法,步骤,数据,单元格,  在Excel中经常需要用到锁定单元格这个功能,可能有朋友只知道如何锁定单元格,却不知道如何解锁,不知道的朋友可以看看以下关于解除excel锁定单元格的方法教程,或许对你有意想不到的收获!解除excel锁定单元格的方…

JS中去掉array中重复元素的方法

JS中去掉array中重复元素的方法

方法,重复元素,电脑软件,JS,array,今天看了廖雪峰的js教程,看到了filter的用法。其中用它来实现去除Array中重复元素的方法在这里记录下来。Filterfilter是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。和map()类似,Arra…

PS图象处理软件让阳光透过树叶散射

PS图象处理软件让阳光透过树叶散射

图象,树叶,处理软件,特效,阳光透过,一缕阳光可以透过层层树叶看到。它给人一种真实的感觉,它比单一的森林景观要好得多。这是通过树叶从不同层次散射阳光PS图象处理软件的方法简介。让我们看一看。 步: 1、打开一张树林的图片,选择图片,最好…

如何重置Windows 10用户账户密码

如何重置Windows 10用户账户密码

用户账户,密码,重置,电脑软件,Windows,你是否有过遗忘了 Windows 10 用户密码而无法登录到计算机的情况,今天我们介绍一个可以重置 Windows 10 用户密码的方法,以帮助大家在不进行重装的前提下挽救系统和数据。虽然很多科技企业都在想办法消…

PPT2007如何设置所有幻灯片自动

PPT2007如何设置所有幻灯片自动

幻灯片,如何设置,电脑软件,当播放幻灯片时,很显然全球自动播放的结果必须是手动的。你是做什么的如何在PPT2007设置自动播放,下面小编辑会告诉你,所有的幻灯片PPT2007设置自动方式。 PPT2007幻灯片自动播放设置的所有 输入动画;标签在右边的…

.NET Core应用类型(Portable apps &

.NET Core应用类型(Portable apps &

类型,电脑软件,Core,NET,contained,介绍有许多种方式可以用来考虑构建应用的类型,通常类型用来描述一个特定的执行模型或者基于此的应用。举例说:控制台应用(Console Application)、Web应用(Web Application)等等。所有这些类型的应用都可以用.NE…

PS如何绘制心跳耳机图标

PS如何绘制心跳耳机图标

图标,绘制,耳机,电脑软件,PS,耳机主要用来听音乐。如何给耳机添加音乐我们可以使用心跳来显示它,然后我们将看详细的教程。 软件名称:Adobe PS图象处理软件8全绿色中文版软件大小:150.1mb更新时间:2015-11-04 1,先找钢笔工具,在没有纸的背景下勾…

如何切换和新建Word文档窗口

如何切换和新建Word文档窗口

文档,方法,窗口,电脑软件,Word,  在打开很多Word文档进行编辑时,可以使用“视图”选项卡中的“切换窗口”来实现快速切换,以对不同的文档进行编辑。以下是小编为您带来的关于切换和新建Word文档窗口的方法,希望对您有所…

ps如何制作gif动画

ps如何制作gif动画

动画,电脑软件,ps,gif,   Photoshop(以下简称PS)是一款强大的处理静态图像的软件。PS具有集成gif动画编辑的功能。这样一来,静态图像可方便地进一步的处理成动态图像,而无需在不同的软件中过渡,下面小编教大家5分钟学会酷炫的gi…