• 在对数据表中数据进行统计时,可能需要按照一定的类别分别进行统计。比如查询每个部门的员工数。

  • 使用GROUP BY按某个字段,或者多个字段中的值,进行分组,字段中值相同的为一组

语法格式

  • 查询列表必须是分组函数和出现在GROUP BY后面的字段
  • 通常而言,分组前的数据筛选放在where子句中,分组后的数据筛选放在having子句中
SELECT 字段名1(要求出现在group by后面),分组函数(),……
FROM 表名
WHERE 条件
GROUP BY 字段名1,字段名2
ORDER BY 字段
HAVING 过滤条件;

应用实例

  • 查询每个部门的人数
mysql> select dept_id, count(*) from employees group by dept_id;
+---------+----------+
| dept_id | count(*) |
+---------+----------+
|       1 |        8 |
|       2 |        5 |
|       3 |        6 |
|       4 |       55 |
|       5 |       12 |
|       6 |        9 |
|       7 |       35 |
|       8 |        3 |
+---------+----------+
8 rows in set (0.00 sec)
  • 查询每个部门中年龄最大的员工
mysql> select dept_id, min(birth_date) from employees group by dept_id;
+---------+-----------------+
| dept_id | min(birth_date) |
+---------+-----------------+
|       1 | 1971-08-19      |
|       2 | 1971-11-02      |
|       3 | 1971-09-09      |
|       4 | 1972-01-31      |
|       5 | 1971-08-14      |
|       6 | 1973-04-14      |
|       7 | 1971-12-10      |
|       8 | 1989-05-19      |
+---------+-----------------+
8 rows in set (0.00 sec)
  • 查询每个部门入职最晚员工的入职时间
mysql> select dept_id, max(hire_date) from employees group by dept_id;
+---------+----------------+
| dept_id | max(hire_date) |
+---------+----------------+
|       1 | 2018-11-21     |
|       2 | 2018-09-03     |
|       3 | 2019-07-04     |
|       4 | 2021-02-04     |
|       5 | 2019-06-08     |
|       6 | 2017-10-07     |
|       7 | 2020-08-21     |
|       8 | 2019-11-14     |
+---------+----------------+
8 rows in set (0.00 sec)
  • 统计各部门使用@guodong.com邮箱的员工人数
mysql> select dept_id, count(*) from employees where email like '%@guodong.com' group by dept_id;
+---------+----------+
| dept_id | count(*) |
+---------+----------+
|       1 |        5 |
|       2 |        2 |
|       3 |        4 |
|       4 |       32 |
|       5 |        7 |
|       6 |        5 |
|       7 |       15 |
|       8 |        1 |
+---------+----------+
8 rows in set (0.00 sec)
  • 查看员工2018年工资总收入,按总收入进行降序排列
mysql> select employee_id, sum(basic+bonus) as total from salary where year(date)=2018 group by employee_id order by total desc;
  • 查询部门人数少于5人
mysql> select dept_id, count(*) from employees where count(*)<10 group by dept_id;
ERROR 1111 (HY000): Invalid use of group functionmysql> select dept_id, count(*) from employees group by dept_id having count(*)<10;
+---------+----------+
| dept_id | count(*) |
+---------+----------+
|       1 |        8 |
|       2 |        5 |
|       3 |        6 |
|       6 |        9 |
|       8 |        3 |
+---------+----------+
5 rows in set (0.00 sec)

作者:一个小运维
链接:https://www.jianshu.com/p/75d3e7d52c34

相关资源:

GitOps 初探 - Dcsdn

rabbitmq入门和实战 - Dcsdn

redis哨兵配置文件 - Dcsdn

SQL语句:分组查询相关推荐

  1. sql语句分组查询最新的一次记录

    目录 1 需求 2 xml里面的代码 1 需求 A为任务表,B为日志表.一个任务可能有多个日志,一次任务调度就是一个日志: 现在想要拿到最新一次的调度:也就是单个任务的最新一次调度的信息: 2 xml ...

  2. mysql查询选课程的学生学号和姓名_数据库SQL语句中查询选修了全部课程的学生的学号和姓名理解...

    首先头脑中有三点概念: 1.EXISTS子查询找到的提交 NOTEXISTS子查询中找不到的提交 说明:不要去翻译为存在和不存在,把脑袋搞晕. 2.建立程序循环的概念,这是一个动态的查询过程.如FOR ...

  3. 如何在 Linux 上用 SQL 语句来查询 Apache 日志

    Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中 ...

  4. PHP获取MySQL执行sql语句的查询时间

    PHP获取MySQL执行sql语句的查询时间 1. $t1=microtime(true); mysql_query($sql); echo microtime(true)-$t1; 2. //计时开 ...

  5. Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略

    Python之Pandas:利用Pandas函数实现对表格文件的查之高级查询(类似sql,分组查询等)之详细攻略 目录 利用Pandas函数实现对表格文件的查之高级查询(类似sql) 1.分组查询

  6. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  7. java sql范围查询语句,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

  8. Python与开源GIS:在OGR中使用SQL语句进行查询

    属性选择与空间选择都可以看作是OGR内置的选择功能,这两种功能可以解决大部分实际中的问题.但是也有这种时候,就是进行查询时的条件比较复杂.针对这种情况,OGR也提供了更加灵活的解决方案:支持使用SQL ...

  9. SQL Server分组查询

    分组查询 1.分组查询语句 分组查询语句中,只能是分组列和聚合函数 2.分组查询语句中,如果不是分组列也不是聚合函数则会报以下错误 3.group by子句可以对某列或者多列进行分组查询 4.orde ...

  10. sql语句连接查询.

    sql语句连接查询. 接触sql语句这么长时间了,牵涉到连接的时候,总是google别人的. 今天好好学学sql 的连接查询 准备工作 : mysql5.6 建表语句 查询语句 select p.id ...

最新文章

  1. ZYNQ_AXI4_Lite总线详解
  2. 敏捷个人俱乐部2012年2月线下活动:活出我的最好生活
  3. 获取顶级常量、祖先链、私有方法
  4. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
  5. 第一个,net core项目,.net core入门介绍来了
  6. vue路由权限(结合服务端koa2)
  7. 真香警告!2021Android高级面试题,挥泪整理面经
  8. leetcode86. 分隔链表
  9. python矩阵中的冒号:
  10. 无罪的罪人_探索敏捷和无罪的文化
  11. 【华为云技术分享】云图说 | 华为云AnyStack on BMS解决方案:助力线下虚拟化业务迁移上云
  12. 一天学会php(下)
  13. 程序员,建立你的商业意识
  14. Flask 的路由系统 FBV 与 CBV
  15. python pos函数_从0入门Python — 4. 函数
  16. 汽车汽配行业DMS渠道商系统精准掌握渠道库存,提升市场响应能力
  17. 字典文件txt下载_qq阅读官方下载-QQ阅读器下载V7.5.0.888官方最新版
  18. iNodeClient 校园网客户端在linux环境下的使用方法
  19. 人生不设限,要勇于去闯_《不如去闯》读书心得
  20. 烤仔看世界 | “女王”的骗局

热门文章

  1. WMS和WMTS的区别
  2. 防火墙(360天堤)双因素身份认证解决方案
  3. 五线谱音名和组别对照表_认识五线谱,大谱表与钢琴对照表
  4. 前端常见图片格式整理
  5. Unity3D开发之折线图的制作(二)
  6. 黑马程序员——经典C语言程序设计100例
  7. C# Winform控件库分享,免费开源,支持中文!(附DLL及教程)
  8. J2SE - super
  9. MuleSoft知识总结-9.使用Mule基本组件(Sub Flow,Set Payload,Logger,Flow Reference)
  10. Nginx服务器概述