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.mzph.cn/news/78567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

virtualbox虚拟机中安装FreeDOS系统和DJGPP编译环境

一、安装FreeDOS系统 1、从官网下载FreeDOS系统镜像,下载的压缩包中包含两个文件:后缀为.iso和.img的镜像 ​​​下载页面 http://www.freedos.org/download/ 直接下载链接 https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.…

软件架构设计(十三) 构件与中间件技术

中间件的定义 其实中间件是属于构件的一种。是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同技术之间共享资源。 我们把它定性为一类系统软件,比如我们常说的消息中间件,数据库中间件等等都是中间件的一种体现。一般情况都是给应用系统提供服务,而不是直接…

vue-自适应布局-postcss-pxtorem

原理: 比如一个375px设计稿 其中一个320px宽度的元素 如何实现自适应布局呢? 其实可以这样理解: 我们先计算出375屏幕时候320px的大小,在屏幕变化时候,这些元素都会等比例缩放 比如屏幕从375 变为750px时候&#xff0…

行业追踪,2023-09-14

自动复盘 2023-09-14 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

http实现文件分片下载

文章目录 检测是否支持HTTP Range 语法Range请求cURL示例单一范围多重范围条件式分片请求 Range分片请求的响应文件整体下载文件分片下载文本下载图片下载封装下载方法 HTTP分片异步下载是一种下载文件的技术,它允许将一个大文件分成多个小块(分片&#…

[重磅来袭] 功能强大的开源数据中台系统 DataCap 1.14.0 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台,建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与 OpenAI 的 API 进行交互组件:https://github.com/devlive-community/openai…

【黄色手套22】1话:基本数据类型

目录 前提补充: first : second: 基本数据类型: 整型: 字符型 : ASCII 码表 : 浮点型: 格式占位符 : 字符型数据的输入输出: 字符输入函数: getchar();//单个字符 gets();//…

prompt 视频收集

1.ChatGPT Prompt提示词工程 ***** 常用技巧 (基本原则,格式,角色扮演)_哔哩哔哩_bilibili

C生万物之函数

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法…

Redis Cluster集群运维与核心原理剖析

Redis集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性…

Sentinel控制台配置 持久化到nacos

sentinel控制台,使用方便,功能强大。使用官方的jar包,配置不会持久化,sentinel重启后会导致,之前的规则全部丢失,下面一起改造源码实现规则数据的持久化 sentinel源码地址 (github访问太慢&am…

git-命令行显示当前目录分支

1. 打开家目录.bashrc隐藏文件,找到如下内容 forlinxubuntu:~$ vi ~/.bashrcif [ "$color_prompt" yes ]; thenPS1${debian_chroot:($debian_chroot)}\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ elsePS1${debian_chroot:($debi…

Maintaining leader role through timed lease mechanism

Continuous understanding of distributed systems design On the one hand 基于定时的租约机制来保持leader角色 基于定时的租约机制来保持leader角色的设计思想是一种在分布式系统中确保高可用性和系统一致性的解决方法。 在分布式系统中,通常会有一个角色被选举…

Python 文件和正则表达式

文章目录 Python 文件和正则表达式文件打开文件读取文件直接读取 read():逐行读取采用 **for** 循环:采用 readlines(): 正则表达式匹配规则re 模块match 方法:search 方法group 方法split 方法 Python 文件和正则表达式 文件 打…

LeetCode刷题笔记【31】:动态规划专题-3(整数拆分、不同的二叉搜索树)

文章目录 前置知识343. 整数拆分题目描述解题思路代码进一步优化 96.不同的二叉搜索树题目描述解题思路代码优化改进 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【29】:动态规划专题-1(斐波那契数、爬楼梯、使用最小花费爬楼梯&…

召回和排序的样本构造问题

精排 正样本:曝光点击负样本:曝光未点击 粗排 正样本:曝光点击负样本:如果只复用精排的负样本,粗排模型对精排模型的拟合就会出现比较大的偏差。因为粗排打分高的item可能会被精排打低分,导致不能下发曝…

算法笔记——循环链表

带环链表 算法题中,会有一种题目让我们去判断链表里的是否有循环。 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 这里就需要我们要用快慢指针来进行搜索,直接提供代码 class Solution { public:bool hasCycle(ListNode *…

openwrt上/etc/localtime报错问题解决

笔者在openwrt上使用docker 搭建为知笔记服务端的时候碰到了/etc/localtime报错问题,解决过程记录如下: docker构建命令如下 docker run --name wiz --restartalways -it -d \ -v /opt/wizdata:/wiz/storage \ -v /etc/localtime:/etc/localtime \ -p 8666:80 \ -p…

Qt开发 入门

1.Qt概述 什么是Qt 不论我们学习什么样的知识点首先第一步都需要搞明白它是什么,这样才能明确当前学习的方向是否正确,下面给大家介绍一下什么是Qt。 Qt是一个跨平台的C应用程序开发框架 具有短平快的优秀特质: 投资少、周期短、见效快、效益高几乎支持…

VM-Linux基础操作命令

目录 基础知识: Linux的组成 命令执行的本质: 通配符: 终端 1.命令提示符 1.2.命令格式 例一:查看内核 例二: 查看内核版本 例三:查看shell类型 例四:查看IP地址 2.cd命令 3.查看帮…