当前位置: 首页 > news >正文

mysql的分组group by

文章目录

  • 一、介绍
    • 1、分组查询的内容
    • 2、多字段分组
    • 3、将查询内容连接group_concat
    • 4、有条件的分组查询having


一、介绍

  • 将某个字段的相同值分为一组,分组查询的结果强调的是一个整体,每组内容只显示一行
  • 分组查询的内容一般要查询分组字段,因为要知道是哪个组的信息

1、分组查询的内容

  1. 聚合函数:组内多条记录的统计结果
-- 各个单位的人数
selectdept_id,sum(id)
from t_user
group by dept_id
  1. 查询分组字段:根据某个字段分组,那么查询出来的分组字段也是一样的
-- 查询所有的单位id
selectdept_id
from t_user
group by dept_id
  1. 查询分组字段外的其他字段:取排序后(mysql自然排序)的第一条记录的信息
-- 根据单位id分组,每个单位内会有很多人,分组查询只能展示一条记录,所以会展示mysql自然排序的第一条记录的姓名
selectdept_id,name
from t_user
group by dept_id

2、多字段分组

group by 字段名,字段名......-- 查询每个单位下各个年龄的人数
selectdept_id,age,sum(id)
from t_user
group by dept_id,age

3、将查询内容连接group_concat

-- 默认分隔符逗号
group_concat(column,column......)-- 指定分隔符
group_concat(column separator ';')
  • 返回结果 = varchar

  • 之前的分组结果都是聚合函数的结果:平均数、总和、数量,总之显示结果只会出现一条;group_concat可以将组内多条记录连接起来

  • 单字段

    -- 每个部门的员工的姓名
    selectdept_id,group_concat(name) name
    from student
    group by dept_id-- 结果
    dept_id     name
    1           kimi,sally
    2           tony,jim
    
  • 多字段

    -- 每个部门的员工的姓名、年龄
    selectdept_id,group_concat(name,age) info
    from student
    group by dept_id-- 结果
    dept_id     info
    1           kimi18,sally19
    2           tony20,jim21-- 由于多字段拼接没有字符连接,借助concat_ws()函数
    selectdept_id,group_concat(concat_ws('-',name,age)) info
    from student
    group by dept_id-- 结果
    dept_id     info
    1           kimi-18,sally-19
    2           tony-20,jim-21
    
  • 去重拼接

    - 每个单位员工的年龄
    selectdept_id,group_concat(distinct age) age
    from student
    group by dept_id
    
  • 排序拼接

    - 每个单位员工的年龄,并按照年龄倒序
    selectdept_id,group_concat(age order by age desc) age
    from student
    group by dept_id
    

4、有条件的分组查询having

  • 需要结合group by使用
  • having与where的区别
    • where只能过滤普通字段的条件
    • having可以过滤普通字段的条件,也可以过滤聚合函数的条件
    • 但是一般都是where过滤普通字段,having过滤分组后的聚合条件
-- 单位员工>10人的单位+人数
selectdept_id,count(id)
from t_user
group by dept_id
having count(id)>10
http://www.lryc.cn/news/164697.html

相关文章:

  • Swoole 介绍以及 编译安装
  • Ubuntu终端指令
  • python给json 转实体类加注释的代码实现
  • 绘制三角波与梯形波
  • 【Git】 git push 提示Not possible to fast-forward,无法提交也无法提交程序
  • 优思学院|为什么质量工程师在别人看是“救火“的呢?
  • VMware Explore | 联想与VMware扩大合作带来生成式AI和多云解决方案
  • 8月份徒弟企业面试后反馈的软件测试面试题(含金量高请收藏)
  • 私有云不是真正的云计算!
  • netperf 测试时延和吞吐
  • 安卓预制权限添加规则
  • D3JS简介
  • 系统架构设计师(第二版)学习笔记----系统工程
  • java spring cloud 企业工程管理系统源码+二次开发+定制化服务
  • IMX6ULL移植篇-boot 命令的学习
  • Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析
  • unity 接收拼接数据进行纹理替换且保存相机纹理到rtsp server(一)
  • 视频讲解|3014 含分布式电源的配电网优化重构
  • 分布式、锁、延时任务
  • Mojo 语言官网
  • JTS:02 使用WKB操作数据
  • stonedb部署实践
  • wsl使用apt install net-tools报错
  • python 使用requests爬取百度图片并显示
  • DataSecurity Plus:守护企业数据安全的坚实堡垒
  • 《树莓派4B家庭服务器搭建指南》第二十一期:安装开源远程桌面服务rustdesk, 内网丝滑,外网流畅控制
  • Redis 分布式锁
  • 水循环原理VR实景教学课件开发
  • [小尾巴 UI 组件库] 全屏响应式轮播背景图(基于 Vue 3 与 Element Plus)
  • 关于ESP32S3无法识别到端口问题