GROUP BY 是 SQL 中用来按某些列的值进行分组的语句,常配合聚合函数(如 COUNT、SUM、AVG 等)使用。
SELECT 列1, 聚合函数(列2)
FROM 表名
GROUP BY 列1;
含义:
把 列1 值相同的行分成一组,然后对每个组做统计。
orders| id | user | amount |
|---|---|---|
| 1 | A | 100 |
| 2 | B | 200 |
| 3 | A | 150 |
| 4 | B | 50 |
SELECT user, COUNT(*) AS order_count
FROM orders
GROUP BY user;
结果:
| user | order_count |
|---|---|
| A | 2 |
| B | 2 |
SELECT user, status, COUNT(*)
FROM orders
GROUP BY user, status;
规则:
user 和 status 都相同的行才会被分到同一组。
COUNT():计数SUM():求和AVG():平均值MAX() / MIN():最大 / 最小值示例:
SELECT user, SUM(amount) AS total
FROM orders
GROUP BY user;
WHERE 不能用于分组后的条件,要用 HAVING
SELECT user, SUM(amount) AS total
FROM orders
GROUP BY user
HAVING SUM(amount) > 200;
❌ 错误:
SELECT user, amount
FROM orders
GROUP BY user;
(非聚合列 amount 不能单独出现在 SELECT)
✅ 正确:
SELECT user, SUM(amount)
FROM orders
GROUP BY user;
如果你用的是 MySQL / PostgreSQL / SQL Server / Oracle,或者想结合具体业务场景(比如按天、按地区分组),可以告诉我,我给你写具体 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。