group by多字段分组
在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。比如有一个学生选课表,表结构如下:
Table: Subject_SelectionSubject 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: OrderProduct 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字段值的记录放到一个分组里。
group by多字段分组相关推荐
- 玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!
sql语句group by使用详解 group by的基本语法 基本语法 什么是分组查询(一个字段) 多个字段的分组查询 1.两个字段的分组查询 2.三个字段及N个字段进行分组查询 having子句的 ...
- mysql grou平by_MySQL group by对单字分组序和多字段分组的方法讲解
我这里创建了一个 goods 表,先看下里面的数据: mysql> select * from goods; +----+------+------+------------+--------- ...
- 将查询出来的数据按照一个字段分组且排序过程中,遇到的一些有关group的问题(分组排序应该使用partition by)
目录 我想要的效果 Group By Group By 语法 Group By 错误示例 重点提醒 功能实现(partition by 分区函数) 以往查询出来的数据想要按照某一个字段分组展示,直接按 ...
- es统计有多少个分组_es多字段分组去重统计
< es多字段分组去重统计 oracle中sql: select a1 ,b1 from dual group by a1 ,b1 或 select DISTINCT a1 ,b1 from d ...
- 【mysql技巧】按某一字段分组取最大(小)值所在行的数据
mysql技巧--按某一字段分组取最大(小)值所在行的数据,这是mysql数据库程序员经常用到的在处理一些报表数据时候可以活用!那么猎微网将总结几种mysql查询最大值 mysql查询最小值的方法! ...
- mysql按某一字段分组取最大(小)值所在行的数据
mysql按某一字段分组取最大(小)值所在行的数据 mysql技巧--按某一字段分组取最大(小)值所在行的数据,这是mysql数据库程序员经常用到的在处理一些报表数据时候可以活用!那么猎微网将总结 ...
- java8 多个字段分组_MySQL基础之分组查询
在MySQL 查询 语句中,允许使用 GROUP BY 子句对结果分组. GROUP BY语法: select 分组函数, 列(要求在group by 子句后面)from 表名[where 条件]gr ...
- MYSQL多字段分组having子句
一.多字段分组的意义 group by 子句的分组字段是一个字段列表,即 MySQL 支持按多个字段进行分组.具体的分组策略:分组优先级从左至右,即先按第一个字段进行分组,然后在第一个字段值相同的记录 ...
- by group 累加中文字段_EF 求和 GroupBy多个字段
GroupBy根据多个字段分组使用方式: 一.使用扩展方法 query.GroupBy(q => new { q.Year, q.Month }) .Select(q => new { Y ...
最新文章
- 获取执行SQL语句的返回结果
- android怎么搭建人脸库,OpenCV-2.4.6-android-sdk 人脸识别demo搭建
- python dlib学习(二):人脸特征点标定
- Java中同时输入字符串和int类型出错的处理方式
- springboot实现上传文件
- oracle存储过程拼',【求助】关于oracle存储过程'字符串拼接'
- 你必须承认电子计算机是天之骄子,天之骄子造句
- cad坐标归零lisp_「软件技巧」厉害了!输入简单命令轻松解决CAD几类常见问题...
- azw3转换为pdf_干货:如何Java 将 Word 文档转换为 PDF
- java socket 断开连接_Socket.IO-client.java重复断开连接并重新连接
- Spring-02-AOP切面编程
- 【erlang ~ 4 days】 Day # 1.1 History
- 杰克·韦尔奇的101条经典语录
- 2022爱分析· 地产科技厂商全景报告
- hprose php用户手册,04 协程 - 《Hprose for PHP 用户手册》 - 书栈网 · BookStack
- 深度强化学习——A3C
- 分享10个可免费使用的网站CDN加速服务
- web前端面试(1) 前端缓存怎么做?
- 示波器电流探头传播延迟的测量
- Python字符串转义符大全
热门文章
- 移动端测试===adb shell top命令解释
- asp.net中GridView多行表头导出Excel表头显示不全问题解决方法
- Webpack入门——使用Webpack打包Angular项目的一个例子
- SQL Server 默认跟踪 -- 捕获事件详解
- initrd的使用及说明
- C++指针探讨 (二) 函数指针
- 英特尔公司面向 Android 软件开发套件(SDK)4.3 的 x86 Android* 系统映像的内部评估许可协议...
- (libgdx学习)GestureDetector
- 使用FragmentTabHost+Fragment+viewpager 实现滑动分页
- Java中加载properties文件的6种方法