MySQL之分组


分组
  • 按照字段分组,表示此字段相同的数据回被放到一个组中
  • 分组后,只能查询出相同的数据列
  • 可以对分组后的数据进行统计,做聚合运算
  • 语法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
  • 查询男女生总数
select gender,count(*) from students group by gender;
分组后进行筛选
  • 查询
select gender,count(*) from students group by gender;
  • 查询男女生总数
select gender,count(*) from students group by gender;
  • 分组后筛选 gender=0
select gender,count(*) from students group by gender having gender=0;

起别名:
select gender,count(*) as rs from students group by gender having rs>2;
where和having区别

都是筛选,面向的数据集不一样的

  • where是对原始数据集进行筛选
  • having是对group by之后形成的结果集进行筛选

MySQL 分组主要通过 `GROUP BY` 语句实现,结合聚合函数使用可以对数据进行分组统计。在使用时,`GROUP BY` 语句用于根据一个或多个列对结果集进行分组,而聚合函数(如 `SUM`、`COUNT`、`AVG`、`MAX`、`MIN` 等)则用于对每个分组的数据进行计算。例如,若要统计每个部门的员工数量,可使用如下 SQL 语句: ```sql SELECT department, COUNT(*) as employee_count FROM employees GROUP BY department; ``` 此语句按照 `department` 列对 `employees` 表进行分组,再用 `COUNT(*)` 函数统计每个分组中的记录数量,最终得到每个部门的员工数量。 `HAVING` 子句可对分组后的结果进行筛选,它与 `WHERE` 子句类似,但 `WHERE` 子句用于筛选分组的数据,`HAVING` 子句用于筛选分组后的数据。例如,要找出员工数量超过 10 人的部门,可使用如下 SQL 语句: ```sql SELECT department, COUNT(*) as employee_count FROM employees GROUP BY department HAVING employee_count > 10; ``` 该语句先按 `department` 列分组,统计每个部门的员工数量,再用 `HAVING` 子句筛选出员工数量超过 10 人的部门。 MySQL 分组在数据分析报告生成中应用广泛,能快速从大量数据中提取有价的信息,为决策提供支持。常见应用场景包括统计每个类别的销售总额、计算每个时间段的平均订单金额、找出每个地区的最大最小人口数量等。 此外,在 MySQL 中还可实现类似 `row_number() over(partition by )` 的分组排序功能。例如,对特定表进行分组排序的 SQL 语句如下: ```sql SELECT A.RPT_ID, if(@pdept=A.RPT_ID,@rank:=@rank+1,@rank:=1) AS STIF_SEQ, @pdept:=A.RPT_ID, @rownum:=@rownum+1, E.CASE_ID FROM TMP_SEIF_N A, (select @rownum :=0 , @pdept := null ,@rank:=0) rr WHERE A.CASE_ID = E.CASE_ID AND A.CUST_ID = E.CUST_ID ORDER BY A.RPT_ID, E.TICD DESC; ``` 该语句通过变量实现了分组排序的功能,按 `RPT_ID` 分组,并按 `TICD` 降序排序。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值