📜  PostgreSQL-GROUP BY(1)

📅  最后修改于: 2023-12-03 15:18:39.437000             🧑  作者: Mango

PostgreSQL GROUP BY

在 PostgreSQL 中,可以使用 GROUP BY 子句将数据行分组,并在每个分组中计算聚合函数(例如 COUNT、SUM、AVG 等)的值。

语法
SELECT column1, column2, ... 
FROM table_name 
WHERE condition
GROUP BY column1, column2, ...;
  • column1, column2, ...:要分组的列。
  • table_name:要从中检索数据的表名。
  • condition:可选,用于筛选要包括在结果集中的行的条件。
示例

例如,假设有以下数据表 customers

id | name   | age | gender
---+--------+-----+-------
1  | Alice  | 24  | F
2  | Bob    | 29  | M
3  | Carol  | 21  | F
4  | Dave   | 34  | M
5  | Eve    | 27  | F

现在要计算每个性别的客户数量和年龄平均值。可以使用以下 SQL 查询:

SELECT gender, COUNT(*), AVG(age)
FROM customers
GROUP BY gender;

运行结果如下:

gender | count |        avg        
-------+-------+------------------
F      |     3 | 24.00000000000000
M      |     2 | 31.50000000000000

以上查询使用了 GROUP BY 子句将数据按性别分组,并使用 COUNTAVG 聚合函数计算客户数量和年龄平均值。

注意事项
  • SELECT 子句中指定的列必须要么是分组列,要么是聚合函数的参数。
  • 如果在 SELECT 子句中指定了聚合函数但没有指定分组列,则查询结果将被视为单个分组。
  • 如果在 WHERE 子句中指定了条件,则只有满足条件的数据行才会被计入分组。
  • 分组列和聚合函数的顺序很重要,可以影响查询结果。
  • 如果要按多个列进行分组,可以在 GROUP BY 子句中指定多个列,例如 GROUP BY column1, column2