SQL Server - group by
转载自https://segmentfault.com/a/1190000006821331
在平时的开发任务中我们经常会用到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。
SQL Server - group by的更多相关文章
- SQL Server GROUP BY 后 拼接 字符串
		原文地址:https://blog.csdn.net/u010673842/article/details/79637618 select ID, ,,'') from class a group b ... 
- sql server group by 分组带sum avg求和需要注意的一点
		这是在写SQL语句遇到的一个sum 和group bu分组的问题 
- sql server group by    having   之复习篇
		where 与 having 之间的差别在于where 是分组前的过滤,而having是分组后的过滤 Group By中Select指定的字段限制 示例3 select 类别, sum(数量) as ... 
- SQL Server 利用批量(batchsize)提交加快数据生成/导入
		在最小化日志操作解析,应用的文章中有朋友反映生成测试数据较慢.在此跟大家分享一个简单的应用,在生成数据过程中采用批量提交的方式以加快数据导入. 此应用不光生成测试数据上,在BCP导入数据中,复制初始化 ... 
- Migrating Oracle on UNIX to SQL Server on Windows
		Appendices Published: April 27, 2005 On This Page Appendix A: SQL Server for Oracle Professionals Ap ... 
- Microsoft SQL Server  Version List    [sqlserver 7.0-------sql server 2016]
		http://sqlserverbuilds.blogspot.jp/ What version of SQL Server do I have? This unofficial build ch ... 
- Microsoft SQL Server Version List(SQL Server 版本)
		原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ... 
- SQL SERVER 雨量计累计雨量(小时)的统计思路
		PLC中定时读取5分钟雨量值,如何将该值统计为小时雨量作为累计?在sql server group by聚合函数,轻松实现该目的. 1.编写思路 数据库中字段依据datetime每五分钟插入一条语句, ... 
- SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
		1.创建表 Staff CREATE TABLE [dbo].[Staff]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Money] [int] NULL, [Cr ... 
随机推荐
- Visual Studio 2017 设置透明背景图
			一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ... 
- 关于Jpa和Mybatis的一些看法
			现在网络上充斥着Jpa和Mybatis的一些对比.其实狭义上来说是hibernate和mybatis之间的比较. 例如:为什么感觉国内比较流行的 mybatis 在国外好像没人用的样子? 下面是一些截 ... 
- Oracle伪列(ROWNUM)的使用
			先看一个题:查询emp表的信息,显示前5行数据,这时候我们就需要使用伪列(rownum)的概念. rownum在数据表并不是一个真实的列,其实每一行应该都有一个行号,这个伪列就是用来记录这个行号的,这 ... 
- PHP之pear包总结
			现在我们开发的时候,尤其是使用框架进行项目开发的时候,都会有一个专门的包管理工具,对,那就是composer,使用这个工具可以简单快速的引入一个代码包,十分快捷好用.接下就总结一下,经常使用到的pea ... 
- ABP中的拦截器之ValidationInterceptor(上)
			从今天这一节起就要深入到ABP中的每一个重要的知识点来一步步进行分析,在进行介绍ABP中的拦截器之前我们先要有个概念,到底什么是拦截器,在介绍这些之前,我们必须要了解AOP编程思想,这个一般翻译是面向 ... 
- Spring生命周期 Constructor > @PostConstruct > InitializingBean > init-method
			项目中用到了 afterPropertiesSet: 于是具体的查了一下到底afterPropertiesSet到底是什么时候执行的.为什么一定要实现 InitializingBean; **/ @C ... 
- Python——字典操作
			一.取出字典中所有的key-value student={'name':'xiaoming','age':11,'school':'tsinghua'} for key,value in studen ... 
- Pthread 用法笔记
			什么是线程? 从技术上讲,一个线程被定义为一个独立的指令流. 一个进程可以包含一个或多个线程. 线程操作包括线程创建,终止,同步(连接,阻塞),调度,数据管理和进程交互. 进程内的所有线程共享: 相同 ... 
- [SCOI2015]小凸想跑步
			题目描述 小凸晚上喜欢到操场跑步,今天他跑完两圈之后,他玩起了这样一个游戏. 操场是个凸 n 边形, nn 个顶点按照逆时针从 0 ∼n−1 编号.现在小凸随机站在操场中的某个位置,标记为p点.将 p ... 
- 深入理解JVM(2)——运行时数据区
			1.运行时数据区 1.1.程序计数器 记录当前线程正在执行的字节码指令的地址,如果正在执行的是 Native 方法,这个计数器值则为空. 1.2.虚拟机栈 每个 Java 方法在执行的同时会创建一个栈 ... 
