欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

mysql的group by函数使用方法

2025年08月18日 Mysql
mysql中的group by子句用于将查询结果按一个或多个列进行分组,通常与聚合函数(如count, sum, avg, max, min等)配合使用,实现数据的分组统计。以下是详细使用方法:1.

mysql中的group by子句用于将查询结果按一个或多个列进行分组,通常与聚合函数(如count, sum, avg, max, min等)配合使用,实现数据的分组统计。以下是详细使用方法:

1. 基础语法

select column1, aggregate_function(column2)
from table_name
where condition
group by column1
order by column1;

2. 核心功能

(1) 单列分组

统计每个部门的员工数量:

select department, count(*) as employee_count
from employees
group by department;

(2) 多列分组

统计每个部门+职位的平均工资:

select department, job_title, avg(salary) as avg_salary
from employees
group by department, job_title;

(3) 结合聚合函数

  • count():计数
  • sum():求和
  • avg():平均值
  • max()/min():极值
  • group_concat():合并分组内的字符串

3. 过滤分组:having

where过滤行,having过滤分组:

select department, avg(salary) as avg_salary
from employees
group by department
having avg_salary > 5000;  -- 筛选平均工资>5000的部门

4. 常见错误

(1) select非聚合列未分组

❌ 错误写法:

select department, employee_name, count(*)
from employees
group by department;

✅ 正确写法:

select department, group_concat(employee_name), count(*)
from employees
group by department;

(2) having与where混淆

  • where在分组前过滤(如过滤原始数据)
  • having在分组后过滤(如过滤统计结果)

5. 高级用法

(1) with rollup(生成小计/总计)

select department, sum(salary)
from employees
group by department with rollup;

结果会多出一行null,表示所有部门的总计。

(2) 分组后排序

select department, count(*)
from employees
group by department
order by count(*) desc;  -- 按员工数量降序排列

6. 注意事项

  1. mysql 5.7+默认启用only_full_group_by模式,要求select中的非聚合列必须出现在group by中。
  2. 可通过any_value()函数绕过严格模式:
    select any_value(employee_name), department, count(*)
    from employees
    group by department;

示例场景

统计2023年每月销售额及订单数:

select 
    month(order_date) as month,
    sum(amount) as total_sales,
    count(order_id) as order_count
from orders
where year(order_date) = 2023
group by month(order_date)
order by month;

通过灵活组合group by和聚合函数,可以高效实现复杂的数据统计分析需求。

到此这篇关于mysql的group by函数怎么使用的文章就介绍到这了,更多相关mysql group by函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!