一文讲懂SQL分组子句GROUP BY
大家好,我是宁一。
今天讲解SQL教程第15课:GROUP BY子句。
GROUP BY子句是用来给结果集分组的,通常与我们上节课讲的聚合函数结合使用。
基本语法:
SELECT <字段名>
FROM <表名>
GROUP BY <字段名>;
1、GROUP BY子句
如果SQL语句中有GROUP BY子句,SELECT后面的字段如果是表中现有的列,则GROUP BY子句中也必须有这个列,否则会报错。
这句话有点不好理解,我们举个实例就清楚多了。
实例:在Students表中,将记录通过学生性别Ssex分组。
SELECT Ssex
FROM Students
GROUP BY Ssex;
SELECT后面跟的列是表中现有的列Ssex,GROUP BY子句中也有Ssex列。
如果像下面这样写,SELECT后面跟的Sname列,没有出现在GROUP BY子句中,就会报错。
SELECT Ssex,Sname
FROM Students
GROUP BY Ssex;
上面语句改成下面这样,就没错了。所以一定要牢记,SELECT后面的字段如果是表中现有的列,则GROUP BY子句中也必须有这个列。
SELECT Ssex,Sname
FROM Students
GROUP BY Ssex,Sname;
2、配合聚合函数使用
实际业务中,一般GROUP BY子句都会与聚合函数搭配使用。
实例:在Students表中,将记录通过学生性别Ssex分组,计算每个分组有多少人,并找出每个分组中最大的生日Sage。
实例解析:COUNT(*)与GROUP BY结合使用,会计算出每个分组中的记录数量。
SELECTSsex,COUNT(*) AS "数量",MAX(Sage) AS "最大生日"
FROM Students
GROUP BY Ssex;
3、语句书写顺序
如果语句中同时有WHERE、JOIN、GROUP BY、ORDER BY、LIMIT。书写顺序是这样的:
SELECT <字段名>
FROM <表名>
JOIN <表名>
WHERE <筛选条件>
GROUP BY <字段名>
ORDER BY <字段名>
LIMIT <限制行数>;
语句顺序一定要记牢,顺序不对会报错的。还有语句书写顺序与执行顺序不是一样的,后面的课程我们会详细讲到。
作业:结合Students表和Teachers表,查找每个班主任带的男女学生数量,最后根据数量倒序排序。
示例结果:
作业解析:根据示例答案,第一列是班主任姓名,Students表中只有教师编号Tid,所以我们需要JOIN连接Teachers表,获取到班主任姓名。
我们要查找每个班主任带的男女学生数量,通过GROUP BY对班主任Tname,学生性别Ssex分组,再通过COUNT(*)计算数量就可以了。
SELECTt.Tname AS "老师姓名",s.Ssex AS "学生性别",COUNT(*) AS "数量"
FROM Teachers AS t
JOIN Students AS s
ON t.Tid = s.Tid
GROUP BY t.Tname,s.Ssex
ORDER BY COUNT(*) DESC;
下节课,我们来讲讲HAVING子句。
点击关注,更新课程第一时间通知哦~
一文讲懂SQL分组子句GROUP BY相关推荐
- 一文讲懂SQL聚合函数
大家好,我是宁一. 今天讲解SQL教程第14课:聚合函数. 1.什么是聚合函数 聚合函数,顾名思义,就是会将数据记录聚合到一起的函数. 比如原先数据库中有100条记录,用聚合函数查询这100条记录中的 ...
- sql分组查询group by结合count,sum统计语句的实现(附带sql详细分析步骤)
日常写代码经常会遇到数据统计的业务场景,分组查询 group by 结合 count 和 sum 的复杂语句写起来容易令人头大,在这里分享两个比较复杂的统计场景,提供详细分析思路和最终sql语句,希望 ...
- 一文搞懂 SQL:基础知识和业务实践总结
作者:cooperyjli,腾讯 CDG 数据分析师 SQL的全称是Structured Query Language(结构化查询语言),是一种古老而简洁的程序设计语言.看似平平无奇,一直被各种吐槽, ...
- 什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂
最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下. 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了. 先分享一个小故 ...
- 一文讲懂什么是三层交换机、网关、DNS、子网掩码、MAC地址
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 很多朋友多次问到什么是网关.dns.子网掩码,三层交换机,它们定位的用途: ...
- 一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2
概述 项目地址 本题是一个盲注题,可以基于布尔也可以基于时间,如果不会的话可以根据提示在网址后面加一个?tips=1降低难度成为一个基于报错的盲注. 本题所有脚本均用傻逼爆破,没有用二分法,有兴趣的大 ...
- 一文讲懂什么是 vlan、三层交换机、网关、DNS、子网掩码、MAC地址
来自:有为网络服务 很多朋友多次问到什么是网关.dns.子网掩码,三层交换机,它们定位的用途:确实,因为网络技术在弱电中确实应用非常广泛,我们平时在vip技术群中也是不断的讨论到网关.vlan.三层交 ...
- 一文讲懂召回中的 NCE NEG sampled softmax loss
深度学习中与分类相关的问题都会涉及到softmax的计算.当目标类别较少时,直接用标准的softmax公式进行计算没问题,当目标类别特别多时,则需采用估算近似的方法简化softmax中归一化的计算. ...
- 一文讲懂图像处理中的低通、高通、带阻和带通滤波器
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 空间域和频域滤波器通常分为四种类型的滤波器--低通.高通.带阻和带 ...
最新文章
- 7篇Nature,2篇Science!这所985高校迎来顶刊大丰收
- ubuntu16.04 安装网易云音乐
- WinForm 曲线图控件
- Dictionary To Dynamic
- AI理论知识基础(23)-齐次坐标
- [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务
- Nginx的目录结构分析
- Delphi TXLSReadWriteII导出Excel
- C++ struct 与 union
- LeetCode Number of Digit One
- LABEL MATRIX里用计数器自动生成流水号和自定义条码格式
- Word插入页码简单方法
- Infor与云的不解之缘
- Python去除小数点后面多余的0
- 数模学习第三天--微分方程(传染病模型)
- Simulink S function 采样时间
- 网站建设规划 如何做网站
- 许一世情 陪你 浪尽天涯
- 英语教师计算机研修总结报告,英语教师研修总结范文(通用5篇)
- K8s9(2-1) k8s中的通信机制, kube-proxy的ipvs模式 ,无头服务,LoadBalancer,ExternalName,外部公有 ip(externalIPs)