group by 多个字段
众所周知,group by 一个字段是根据这个字段进行分组,那么group by 多个字段的结果是什么呢?由前面的结论类比可以得到,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 TB001 5 KB114 2 因为表里记录了有5个学生选择ITB001,2个学生选择了MKB114。
那么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 D001 Todd 12.00 D001 Todd 12.00 D001 Todd 12.00 D001 Lily 12.00 D001 Lily 12.00 D002 Todd 20.00 D002 Todd 20.00 现在我们想统计每个用户在每种商品上总共花了多少钱,执行如下SQL
SELECT Product,Buyer, SUM(Spending)
FROM `Order`
GROUP BY Product, Buyer
获得的结果如下:
Product Buyer SUM D001 Todd 36.00 D001 Lily 24.00 D002 Todd 40.00 本文参考:MYSQL GROUP BY 对多个字段进行分组
如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/9732612.html
group by 多个字段的更多相关文章
- MySQL GROUP BY多个字段分组用法详解
mysql语句中group by 很容易理解 是分组查询.比如 select sum(score) from user group by name 意思是查询每个人的分数总和但是, select su ...
- hive:(group by, having;order by)的使用;group by+多个字段,以及wiki说的group by两种使用限制验证
hive> select * from app_data_stats_historical where os='1' group by dt limit 100; 出现结果如下: 2014-01 ...
- Distinct和Group by去除重复字段记录
重复记录 有两个意义,一是完全重复的记录,也即所有字段均重复的记录 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易解决,使用 s ...
- 【转】group by多个字段理解
来源:http://uule.iteye.com/blog/1569262 首先group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使 ...
- sql小技巧 group by datetime类型字段,只取其中的日期部分
工作中经常会遇到,要在sql中查询报表,查询结果要求按照日期来罗列, 或按照天, 或按照月,年. 这个时候我们经常会苦恼,datetime是精确到毫秒的,如果单纯的group by datetime就 ...
- C# Linq to sql 实现 group by 统计多字段 返回多字段
Linq to sql 使用group by 统计多个字段,然后返回多个字段的值,话不多说,直接上例子: where u.fy_no == fy_no orderby u.we_no group u ...
- MySQL之——GROUP BY分组取字段最大值
转载自:http://blog.csdn.net/l1028386804/article/details/54657412 假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: CREATE ...
- oracle group by 显示其他字段
原先用 select key,max(value) from tbl group by key 查询出的结果,但是我要再多加一个TEST字段 根据网友的语句结合起来,以下是可以显示其他字段,并且考虑排 ...
- group by 两个字段
group by 的简单说明: group by 一般和聚合函数一起使用才有意义,比如 count sum avg等 使用group by的两个要素: (1) 出现在select后面的字段 要么 ...
随机推荐
- chrome扩展程序----域名助手
音乐分享: Future Islands - <Aladdin> 中年大叔的抖腿新专辑<The Far Field> ————————————————————————————— ...
- poj 3268 Silver Cow Party(最短路dijkstra)
描述: One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the bi ...
- vscode插件解析-BookMark
BookMark (书签):在编辑器中标记行并轻松跳转到它们. commands 书签:Toggle 标记/取消标记带书签的行 书签:Jump to Next 将光标向前移动到下面的书签 书签: ...
- Java的慢和稳
对Java的了解还有待进一步提升,也没有做太多实践工作.只是把脑袋当成电脑,把Java放在里边不停地转,观察它的线路.得到的总体印象加上书本参考,认为Java的应用场景是慢和稳. 学编程语言总会接触到 ...
- Xamarin Layout属性(转)
第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android: ...
- python之地基(一)
想要建起一座高楼,最重要的就是建一个扎实地基,以下的内容就是地基的一部分,往你用心去阅读,去练习,去掌握. 一.变量 变量是什么?什么是变量?变量有什么好处? 变量是一种使用方便的占位符,用于引用计算 ...
- VIM 编辑器
可视化模块 进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK) 2 移动光标上移或者下移,选中多行的开头,如下图所示 3 选择完毕后,按大写的的I键,此时下方会提示进入“ ...
- git20181122
git 在线编辑器 http://www.mdeditor.com/git add commit diff log status 代码撤消 # git https://github.com/gyz41 ...
- spring boot+mybatis+quartz项目的搭建完整版
1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...
- CF1093
题解: D: 比较显然这个图得是二分图才行 然后每个二分图上的方案是$(2^a+2^b) (a,b是两种颜色的个数)$ E: 我tm就不该先写bitset的 正解和bitset都很好想 因为是个排列, ...