MySQL分组

Mysql——分组统计 ? 阅读详情

MySQL分组

  • group by

group by语法可以根据给定字段对查询结果进行分组统计,相同属性的数据为一个组。通常,在每组中通过聚合函数来可以计算组中最大,最小等。

如果group by带有having,则只有满足having后面的条件的组才能输出。

注意: having 必须在group by之后。

  • 与分组相关的聚合函数

    count() 返回某个字段的值的行数

    max() 求最大某字段最大的值
    min() 求某字段最小值
    avg() 返回某字段平均值
    sum() 求某字段总数

    group_concat() 将分组的结果拼接成字符串

  • group by分组SQL语法

    select 字段 from 表名 where where条件 group by 分组条件 having having条件

    order by 字段 asc/desc limit offset, row

    注意:

    1. GROUP BY必须出现在WHERE 之后,ORDER BY 之前。

    2. 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY中给出

      //错误,由于name字段没有写到group by之后
      

      select count(id),name,sex from user group by sex;

      //正确写法
      select count(id),name,sex from user group by sex,name;

    备注:

    group by 用于根据字段进行分组

    having 指定分组的搜索条件,对分组的结果做进一步的处理

    limit 显示查询出来的数据条数

例子

  1. 某个员工信息表(staff)结构和数据如下:
    id name dept salary edlevel hiredate
    1 张三 开发部 2000 3 2009-10-11
    2 李四 开发部 2500 3 2009-10-01
    3 王五 设计部 2600 5 2010-10-02
    4 王六 设计部 2300 4 2010-10-03
    5 马七 设计部 2100 4 2010-10-06
    6 赵八 销售部 3000 5 2010-10-05
    7 钱九 销售部 3100 7 2010-10-07
    8 孙十 销售部 3500 7 2010-10-06

//staff建表语句

create table staff(
    id int not null primary key auto_increment,
    name varchar(200) not null,
    dept varchar(50) not null comment '部门',
    salary float(15,2) comment '薪水',
    edlevel tinyint not null comment '等级',
    hiredate date not null comment '入职时间'
)engine=innodb default charset=utf8;

insert into staff(name,dept,salary,edlevel,hiredate) values('张三','开发部',2000,3,'2009-10-11');
insert into staff(name,dept,salary,edlevel,hiredate) values('李四','开发部',2500,3,'2009-10-01');
insert into staff(name,dept,salary,edlevel,hiredate) values('王五','设计部',2600,5,'2010-10-02');
insert into staff(name,dept,salary,edlevel,hiredate) values('王六','设计部',2300,4,'2010-10-03');
insert into staff(name,dept,salary,edlevel,hiredate) values('马七','设计部',2100,4,'2010-10-06');
insert into staff(name,dept,salary,edlevel,hiredate) values('赵八','销售部',3000,5,'2010-10-05');
insert into staff(name,dept,salary,edlevel,hiredate) values('钱九','销售部',3100,7,'2010-10-07');
insert into staff(name,dept,salary,edlevel,hiredate) values('孙十','销售部',3500,7,'2010-10-06');

聚合函数的简单使用

  1. 求公司总人数

    select count(id) from staff;
    
  2. 求公司薪水支出

    select sum(salary) from staff;
    
  3. 求公司最高薪水

    select max(salary) from staff;
    
  4. 求公司最低薪水

    select min(salary) from staff;
    
  5. 求公司平均薪水

    select avg(salary) from staff;
    

分组与聚合函数结合使用例子

例如,统计出各个部门的员工人数

select count(*) from staff group by dept;
  • group_concat函数与group by结合使用例子

求: 得到每个部门的员工的名字

select dept,group_concat(name) from staff group by dept;

例如,列出每个部门最高薪水的结果,sql语句如下:

SELECT dept, MAX(SALARY) FROM staff GROUP BY dept

查询结果如下:
dept MAXIMUM
开发部 2500
设计部 2600
销售部 3500

  1. 查询每个部门的总薪水数

    select dept, sum(salary) as total from staff group by dept;
    

    查询结果如下:

    dept total
    开发部 4500
    设计部 7000
    销售部 9600

  2. 将where字句与group by 子句一起使用

注意: 必须在group by之前指定where

例子: 查询公司2010年之后入职的各个部门每个级别里的最高薪水

    SELECT DEPT, EDLEVEL, MAX( SALARY ) AS MAXIMUM
FROM staff
WHERE HIREDATE > '2010-01-01'
GROUP BY DEPT, EDLEVEL;

查询结果如下:
DEPT EDLEVEL MAXIMUM
设计部 4 2300
设计部 5 2600
销售部 5 3000
销售部 7 3500

  1. 在GROUP BY子句之后使用HAVING子句

可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY子句后面包含一个HAVING子句。HAVING子句可包含一个或多个用AND和OR连接的谓词。

例如:寻找雇员数超过2个的部门的最高和最低薪水:

SELECT DEPT, MAX( salary ) AS MAXIMUM, MIN( salary ) AS MINIMUM
FROM staff
GROUP BY DEPT
HAVING COUNT( * ) >2;

查询结果如下:
DEPT MAXIMUM MINIMUM
设计部 2600 2100
销售部 3500 3000

例如:寻找雇员平均工资大于3000的部门的最高和最低薪水:

select max(salary),min(salary),dept from staff group by dept having avg(salary) > 3000; 

查询结果如下:
DEPT MAXIMUM MINIMUM
销售部 3500 3000

200Gb/s以上速率的通道信号完整性设计和优化经验(二) 为满足200Gb/s信号完整性需求,需综合优化PCB、连接器、封装及SERDES架构。关键措施包括:采用低粗糙度铜箔与低损耗材料降低传输线损耗(200G目标0.55–0.6dB/cm);通过背钻工艺控制残桩长度至4±2mil;缩减连接器焊盘残桩至600μm以内以消除谐振;封装层面推进跳层走线、低Dk/Df材料与可控SMT工艺;采用PAM4调制与基于ADC/DSP的混合信号架构实现高效均衡。先进CMOS工艺(如纳米片器件)支撑复杂数字处理,协同设计是突破速率瓶颈的核心。 阅读详情

相关推荐

【暂时完结】Prescan学习笔记

Prescan学习记录1. Prescan基础知识1.1 Conventions·坐标1.2 Road segment·道路片段1.2.1 让一个路段连接其他两个路段1.2.2 配置车道线1.2.3 Road marking·道路标志1.3 Trajectory·轨迹1.3.1 建立一个Path·路径1.3.2 配置Speedprofile1.3.3 Synchronization of Trajectories·轨迹同步1.3.4 Multiple trajectories · 多轨迹分配 1. Pres

dreautumn的博客 1万+

MySQL查询结果拼接两个或多个参数(聚合函数)

可以先去MySQL官网查一下聚合函数 https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat 这里我们举一个例子 字段拼接的例子 查询结果 注 这些用法例子MySQL官网文档里面写的也很清楚* ...

qq_35952089的博客 4351

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8543

Mysql条件查询以及分组查询

语法 条件查询语法:select 查询列表 from 表名 where 筛选条件;(这里的筛选条件如果满足才会显示出来,不满足允许的时候就不会显示) 分组查询语法:select 分组函数 , 列1(要求出现在group by的后面),列2 ,..., from 表 (where 筛选条件) group by 分组的列表1,列2,.....(order by 子句) 区分: 这两种都有筛选条件的用法,但是使用的情况不同: 条件查询:分组前筛选,数据源是来自原始表,使用where放在group b

ythswzgxlp的博客 4766

STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控

本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。

weixin_30823001的博客 78

eNSP搭建基础网络

1、除5的环回地址固定以外,整个其他所有网段基于192.168.1.0/24进行合理的IP地址划分 2、R1-R4每个路由器存在两个环回接口,用于模拟连接pc网段﹔地址也在192.168.1.0/24这个网络范围内 3、R1-R4上不能直接编写到达5.5.5.0/24的静态路由,但依然可以访问 4、全网可达,尽量减少每台路由器,路由表条目数量,避免环路出现5R4与R5间,正常100oA链路通信,故障时自动改为100M 全网使用192.168.1.0/24网段进行划分,尽量减少路由条目Pc端IP使用pHcP技

在月光下棕榈树的叶子在瑟瑟抖动 8469

[Mysql] GROUP BY分组

本文主要讲解GROUP BY分组的相关知识点与用法

Hudas的博客 3188

KEPServerEX 6 之 GE Ethernet 连接FANUC ROBOT机器人实战

GE Fanuc是GE公司控制系统部门的一部分,成立于1998年。其主要业务涵盖工业自动化、控制系统、PLC和组态软件等领域。其产品可用于包括自动化、过程自动化、国防、汽车制造、通讯、医疗和航空航天等各种工业领域2009 8月 GE和FANUC今天宣布两家公司已同意解除合资企业GE FANUC自动化公司。通过以上历史,GE Ethernet Driver 当下还支持对接FANUC ROBOT机器人 就不奇怪了。

-雲飛兄-博客 1791

MySQL--基础分组查询

分组数据:GROUP BY 子句语法可以使用GROUP BY子句将表中的数据分成若干组。

weixin_61500949的博客 1148

第3章 基于三电平空间矢量的中点电位平衡策略

本文档深入探讨了基于三电平空间矢量的中点电位平衡策略。重点在于NPC型三电平逆变器的中点电位平衡问题,由于三电平结构的特点,使得直流侧两个电解电容器的充放电不均匀导致中点电压不均衡。文章通过对不同矢量作用下电流、电压的变化进行了详细的定量和定性分析,并提出了利用冗余小矢量的合理配置以及引入调制因子来解决中点电位偏移的方法,确保中点电压在一个完整的开关周期内的稳定性,进而提高系统的可靠性。

嵌入式老牛的博客 2182

【RT-DETR涨点改进】全网独家首发Conv改进篇 | SCI一区 2025 | RT-DETR引入轻量级CGHalfConv通道分组半卷积模块,含多种创新改进、有效提升检测精度

本文介绍引入 GC Half-convolution 模块可以显著提升 RT-DETR 在资源受限环境下的性能。该模块通过通道分组与半卷积结合,有效减少了参数量与计算量,增强了模型对不同尺度和复杂背景下目标的特征提取能力。在保持模型轻量化的同时,GC Half-convolution 能够更细致地区分目标的边缘纹理、颜色、结构等关键信息,从而提升检测精度。特别是在面对小目标、多类别、形态相近的目标时,该模块能提取更具判别性的局部与全局特征,优化 RT-DETR 的检测效果,并加快推理速度。

Ai缝合怪、助力小伙伴高效发论文 745

mysql基础 | 7.分组查询

【代码】进击mysql | 7.分组查询。

qq_47900752的博客 1126

NVIDIA Isaac ROS - 入门教程(一)

欢迎访问 Isaac ROS,这是一套硬件加速、高性能、低延迟的 ROS 2 软件包,用于制造自主机器人,充分利用 Jetson 和其他英伟达平台的强大功能。英伟达 Jetson 平台运行在基于 Ubuntu Linux 的 JetPack 操作系统上。JetPack 5.x 是在 Ubuntu 20.04 Focal 的基础上构建的,这意味着由 ROS 2 Buildfarm 为 Ubuntu 22.04 Jammy 构建的 ROS 2 Humble 的 Debian 包不受支持。由于官方 ROS 2 B

机器人控制与仿真应用 5722

Mysql:分组查询

分组查询 1、分组查询是对数据按照某个或多个字段进行分组,在MYSQL中使用GROUP BY关键字对数据进行分组 2、GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组 ⑴分组的核心是:在查询SQL中指定分组的列名,然后根据该列的值进行分组,值相等的为一组 3、分组查询的基本的语法格式如下: GROUP BY 字段名 [HAVING 条件表达式] 参数: 1、字段名:是指按照该字段的值进行分组(分组是所依据的列名称) 2、HAVING条件表达式:用来...

不怕猫的耗子A 4万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

mysql 分组_MySQL数据分组教程

本篇文章是MySQL的第四篇教程,对于MySQL来说,对于后端开发人员来说是必不可少的东西,我是深受MySQL的折磨和打击,不管是面试的工程中,还是在日常的开发工作当中都是如此。所以写这一系列的文章就是和一些新手小伙伴们共同进步共同学习,把我在日常所遇到的一些坑,在这里展示给大家,希望大家能有所收获,感兴趣的小伙伴们也希望能点赞关注一下。本篇文章主要将主要介绍分组数据,以及便于能汇总表的内容,分别...

weixin_33655208的博客 1529

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MySQL之分组

一.分组的目的 1.分组的目的是为了把数据进行逻辑分组,以方便对每个组进行聚集计算; 比如我们想统计学生stduents(id, class_id, name, gender, score)中男生和女生分别有多少人, 可以这么写: SELECT gender, COUNT(*) AS nums FROM students GROUP BY gender; 得出结果如图所示: 需要注意的是,一旦用到的分组,返回的数据只能是分组的 依据字段(用来做标识)和 ...

汉诺塔少年的博客 2087

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MySQL 分组

在数据库管理中,分组是一种强大的功能,它允许用户根据一个或多个列对数据进行分类,并对每个组执行聚合操作。MySQL 作为最流行的关系型数据库管理系统之一,提供了丰富的分组功能。本文将详细介绍 MySQL 中的分组概念、语法以及如何在实际应用中使用分组来提高数据处理效率。

wjs2024的博客 927

mysql 数据分组_详解MySQL 数据分组

创建分组分组是在SELECT语句中的GROUP BY 子句中建立的。例:SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;GROUP BYGROUP BY子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更细致的控制。如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组商家进行汇总。换句...

weixin_31487533的博客 747

MySQL的分组和分组后筛选语句(十七)

我看到了那天的夕阳,美得如此骄艳,我便决定,追寻夕阳,拼尽余生。

两个蝴蝶飞 4267

mysql 按天分组

mysql timestamp类型字段按小时分组 将那列转成字符串,然后截取小时位置,试试可以不SELECT DATE_FORMAT(createtime,'%Y-%m %H') AS month1,SUM(price) as price1FROM order1GROUP BY month1SELECTSUM(`amo...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 1482

mysql 如何分组统计个数_mysql 怎样统计分组数

mysql统计分组数的方法:1、统计总记录数【SELECT count(*) FROM 表名 WHERE 条件】;2、统计每组的记录条数【SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id】。mysql统计分组数的方法:SELECT count(*) FROM 表名 WHERE 条件这样查出来的是总记录数SELECT count(*) FROM 表名 WHER...

weixin_34449886的博客 8385

mysql 分组 组内过滤_mysql数据分组:过滤分组

mysql过滤分组除了能用group by分组数据外,MySQL还允许过滤分组,规定包括哪些分组,排除哪些分组。例如,可能想要列出至少有两个订单的所有顾客。为得出这种数据,必须基于完整的分组而不是个别的进行过滤。我们已经看到了where子句的作用。但是,在这个例子中where不能完成任务,因为where过滤指定的是行而不是分组。事实上,where没有分组概念。那么,不使用where使用什么呢?My...

weixin_39683769的博客 589

mysql分组查询

group by子句支持单个字段分组,多个字段分组(多个字段之间用,逗号隔开,没有顺序要求),表达式或函数(用的比较少)#1.查询各job_id的员工工资的最大值,最小值,平均值,总和,并按job_id升序。#案例,按员工姓名的长度分组,查询每一组的员工个数,筛选员工个数大于5的有哪些。#按多个字段进行分组,GROUP BY后面的字段之间,可以调换顺序,效果一样。#如果没有group by子句,group_concat返回一列的所有值。#案例查询每个部门的每个工种的员工的平均工资,并且按照工资的高低显示。

Zero的博客 1489

MySQL分组后筛选

在SELECT 语句中,使用GROUP BY子句进行分组后,如果需要对分组后的数据进行筛选,可以使用HANING子句指定筛选条件。 语法: select <字段名列表> from <表名> [where <查询条件>] group by <分组字段列表> having <筛选条件>; HAVING 子句和 WHERE 子句非常相似...

kejiayuan0806的博客 1万+
上一篇: 数据库优化
下一篇: 多表联查
github_phpnobug
博客等级 码龄9年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值