温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GROUP BY怎么分组查询

发布时间:2026-10-07 03:08:19 来源:亿速云 阅读:86 作者:小樊 栏目:数据库

在 SQL 中,GROUP BY 用于按一个或多个列对查询结果进行分组,通常配合聚合函数(如 COUNT、SUM、AVG、MAX、MIN)使用。


一、基本语法

SELECT 列1, 聚合函数(列2)
FROM 表名
[WHERE 条件]
GROUP BY 列1
[ORDER BY ...];

⚠️ 注意:
SELECT 中出现的非聚合列,必须出现在 GROUP BY 中


二、常见示例

1️⃣ 按单个字段分组

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

SELECT department, COUNT(*) AS emp_count
FROM employees
GROUP BY department;

2️⃣ 按多个字段分组

统计每个部门、每个职位的员工数:

SELECT department, job, COUNT(*)
FROM employees
GROUP BY department, job;

3️⃣ 分组后筛选(HAVING)

⚠️ WHERE 不能筛选聚合结果,要用 HAVING

查询人数大于 5 的部门:

SELECT department, COUNT(*) AS cnt
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

4️⃣ 分组 + 排序

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
ORDER BY avg_salary DESC;

三、执行顺序(很重要)

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

四、常见错误 ❌

SELECT name, COUNT(*)
FROM employees
GROUP BY department;

❌ 错误:name 不在 GROUP BY 中,也不是聚合列


五、MySQL 8+ / 标准 SQL 写法建议

避免“隐藏列”分组,写清楚所有分组列。


如果你用的是 MySQL / SQL Server / Oracle / PostgreSQL,或者想结合具体表结构举例,我可以给你写专用 SQL。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手