📅  最后修改于: 2023-12-03 15:18:39.437000             🧑  作者: Mango
在 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
子句将数据按性别分组,并使用 COUNT
和 AVG
聚合函数计算客户数量和年龄平均值。
SELECT
子句中指定的列必须要么是分组列,要么是聚合函数的参数。SELECT
子句中指定了聚合函数但没有指定分组列,则查询结果将被视为单个分组。WHERE
子句中指定了条件,则只有满足条件的数据行才会被计入分组。GROUP BY
子句中指定多个列,例如 GROUP BY column1, column2
。