📚 目录
🛠️ 概述
GROUP BY
语句用于将查询结果集中的数据行分组,并根据某一列或多列的值进行聚合操作。通常,GROUP BY
与聚合函数(如 COUNT
、SUM
、AVG
、MAX
、MIN
等)一起使用,以便对每个组进行计算。
📝 基本语法
GROUP BY
语句的基本语法如下:
SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY column1, column2, ...;
column1, column2, ...
:你希望分组的列。aggregate_function(column)
:用于对每个组进行聚合操作的函数(如COUNT
、SUM
、AVG
等)。table_name
:要查询的表名。
🔢 使用聚合函数
常见的聚合函数包括:
COUNT
:计算行数。SUM
:计算总和。AVG
:计算平均值。MAX
:计算最大值。MIN
:计算最小值。
示例(计算每个部门的员工数量):
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
该查询将返回每个部门的员工数量。
示例(计算每个部门的总薪资):
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
该查询将返回每个部门的薪资总和。
🔢 按多个列分组
你可以使用多个列进行分组。多个列的分组可以帮助你对数据进行更细粒度的汇总。
示例(按部门和职位分组,计算每个组的员工数量):
SELECT department, position, COUNT(*)
FROM employees
GROUP BY department, position;
该查询将返回每个部门和职位的员工数量。
🧑💻 使用 HAVING
子句
HAVING
子句用于过滤 GROUP BY
分组后的结果。与 WHERE
不同,WHERE
子句在分组之前过滤行,而 HAVING
用于在分组后过滤结果。
示例(筛选出员工数量超过 10 人的部门):
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
该查询将返回员工数量超过 10 的部门。
🔢 结合 ORDER BY
使用
你可以结合 ORDER BY
子句对分组结果进行排序。
示例(按部门的总薪资从高到低排序):
SELECT department, SUM(salary)
FROM employees
GROUP BY department
ORDER BY SUM(salary) DESC;
该查询将按每个部门的薪资总和降序排序。
📘 参考资料
- PostgreSQL 官方文档:GROUP BY
- 更多 PostgreSQL 聚合与分组技巧整理自:www.52kanjuqing.com
发表回复