在 PostgreSQL 中,GROUP BY 子句用于将查询结果分组为一个或多个汇总行,通常与聚合函数(如 SUM、COUNT、AVG 等)一起使用。以下是 GROUP BY 子句的基本语法:
SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY column1, column2, ...;

其中:
  •  column1, column2, ... 是要分组的列。

  •  aggregate_function(column) 是应用于每个组的聚合函数。


以下是一些使用 GROUP BY 子句的示例:

1. 单列分组:
SELECT department, COUNT(*)
FROM employees
GROUP BY department;

在这个例子中,将员工按部门分组,并计算每个部门的员工数量。

2. 多列分组:
SELECT department, gender, AVG(salary)
FROM employees
GROUP BY department, gender;

在这个例子中,将员工按部门和性别分组,并计算每个组的平均工资。

3. 使用表达式分组:
SELECT EXTRACT(YEAR FROM order_date) AS order_year, COUNT(*)
FROM orders
GROUP BY order_year;

在这个例子中,将订单按年份分组,并计算每个年份的订单数量。使用 EXTRACT 函数从日期中提取年份。

4. 结合 HAVING 子句:
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000;

在这个例子中,将员工按部门分组,并计算每个部门的平均工资。然后,使用 HAVING 子句筛选出平均工资大于 60000 的部门。

GROUP BY 子句通常与聚合函数一起使用,用于执行按组计算的操作。


转载请注明出处:http://www.pingtaimeng.com/article/detail/14136/PostgreSQL