大家好,我是宁一。

今天讲解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相关推荐

  1. 一文讲懂SQL聚合函数

    大家好,我是宁一. 今天讲解SQL教程第14课:聚合函数. 1.什么是聚合函数 聚合函数,顾名思义,就是会将数据记录聚合到一起的函数. 比如原先数据库中有100条记录,用聚合函数查询这100条记录中的 ...

  2. sql分组查询group by结合count,sum统计语句的实现(附带sql详细分析步骤)

    日常写代码经常会遇到数据统计的业务场景,分组查询 group by 结合 count 和 sum 的复杂语句写起来容易令人头大,在这里分享两个比较复杂的统计场景,提供详细分析思路和最终sql语句,希望 ...

  3. 一文搞懂 SQL:基础知识和业务实践总结

    作者:cooperyjli,腾讯 CDG 数据分析师 SQL的全称是Structured Query Language(结构化查询语言),是一种古老而简洁的程序设计语言.看似平平无奇,一直被各种吐槽, ...

  4. 什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂

    最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下. 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了. 先分享一个小故 ...

  5. 一文讲懂什么是三层交换机、网关、DNS、子网掩码、MAC地址

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 很多朋友多次问到什么是网关.dns.子网掩码,三层交换机,它们定位的用途: ...

  6. 一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2

    概述 项目地址 本题是一个盲注题,可以基于布尔也可以基于时间,如果不会的话可以根据提示在网址后面加一个?tips=1降低难度成为一个基于报错的盲注. 本题所有脚本均用傻逼爆破,没有用二分法,有兴趣的大 ...

  7. 一文讲懂什么是 vlan、三层交换机、网关、DNS、子网掩码、MAC地址

    来自:有为网络服务 很多朋友多次问到什么是网关.dns.子网掩码,三层交换机,它们定位的用途:确实,因为网络技术在弱电中确实应用非常广泛,我们平时在vip技术群中也是不断的讨论到网关.vlan.三层交 ...

  8. 一文讲懂召回中的 NCE NEG sampled softmax loss

    深度学习中与分类相关的问题都会涉及到softmax的计算.当目标类别较少时,直接用标准的softmax公式进行计算没问题,当目标类别特别多时,则需采用估算近似的方法简化softmax中归一化的计算. ...

  9. 一文讲懂图像处理中的低通、高通、带阻和带通滤波器

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 空间域和频域滤波器通常分为四种类型的滤波器--低通.高通.带阻和带 ...

最新文章

  1. 7篇Nature,2篇Science!这所985高校迎来顶刊大丰收
  2. ubuntu16.04 安装网易云音乐
  3. WinForm 曲线图控件
  4. Dictionary To Dynamic
  5. AI理论知识基础(23)-齐次坐标
  6. [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务
  7. Nginx的目录结构分析
  8. Delphi TXLSReadWriteII导出Excel
  9. C++ struct 与 union
  10. LeetCode Number of Digit One
  11. LABEL MATRIX里用计数器自动生成流水号和自定义条码格式
  12. Word插入页码简单方法
  13. Infor与云的不解之缘
  14. Python去除小数点后面多余的0
  15. 数模学习第三天--微分方程(传染病模型)
  16. Simulink S function 采样时间
  17. 网站建设规划 如何做网站
  18. 许一世情 陪你 浪尽天涯
  19. 英语教师计算机研修总结报告,英语教师研修总结范文(通用5篇)
  20. K8s9(2-1) k8s中的通信机制, kube-proxy的ipvs模式 ,无头服务,LoadBalancer,ExternalName,外部公有 ip(externalIPs)

热门文章

  1. 华为p6android os耗电严重,华为手机耗电严重?那你肯定不知道这4个技巧,彻底解决...
  2. 蓝牙耳机品牌性价比排行,2023年性价比高的蓝牙耳机
  3. VirtureBox虚拟机另类复用方法
  4. uniapp 日期选择器、u-select选择器
  5. 原型:_proto_或者prototype都是原型对象
  6. GSP序列模式分析算法
  7. Java实现下载网络文件至本地
  8. 程序设计原则之迪米特原则
  9. Elasticsearch集群安装部署
  10. 监控器sd卡初始化怎么恢复数据?有这三种方法可尝试