聚合函数(Aggregate Functions)通常用在 SQL 查询 中,用来对一组数据进行汇总计算,比如求和、平均值、最大值、最小值、计数等。下面我用通俗解释 + 常见用法 + 示例来说明。
| 函数 | 作用 |
|---|---|
COUNT() |
统计行数 |
SUM() |
求和 |
AVG() |
求平均值 |
MAX() |
求最大值 |
MIN() |
求最小值 |
SELECT COUNT(*) FROM 表名;
统计表中一共有多少行
SELECT COUNT(列名) FROM 表名;
统计该列非 NULL 的值有多少个
SELECT SUM(金额) FROM orders;
计算 orders 表中所有金额的总和
SELECT AVG(成绩) FROM student;
SELECT MAX(价格), MIN(价格) FROM product;
GROUP BY 分组使用(重点)| id | user_id | amount |
|---|---|---|
| 1 | 1 | 100 |
| 2 | 1 | 200 |
| 3 | 2 | 150 |
SELECT user_id, SUM(amount)
FROM orders
GROUP BY user_id;
✅ 结果:
| user_id | SUM(amount) |
|---|---|
| 1 | 300 |
| 2 | 150 |
HAVING 过滤分组结果⚠️ WHERE 不能过滤聚合结果,要用 HAVING
SELECT user_id, SUM(amount) AS total
FROM orders
GROUP BY user_id
HAVING SUM(amount) > 200;
❌ 错误写法(某些数据库不支持):
SELECT user_id, amount, SUM(amount)
FROM orders;
✅ 正确写法(要么分组,要么只聚合):
SELECT user_id, SUM(amount)
FROM orders
GROUP BY user_id;
SELECT
user_id,
COUNT(*) AS 订单数,
SUM(amount) AS 总金额,
AVG(amount) AS 平均金额,
MAX(amount) AS 最大金额
FROM orders
GROUP BY user_id;
| 数据库 | 说明 |
|---|---|
| MySQL | 默认允许非标准 GROUP BY |
| Oracle / PostgreSQL | 要求 SELECT 中的列必须在 GROUP BY 中 |
| SQL Server | 默认严格 |
如果你愿意,可以告诉我:
我可以直接帮你写对应的 SQL ✅
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。