聚合函数 行
聚合函数-统计
-
统计数量
COUNT(*)- 解释
- 统计所有聚合列中 非NULL行 的数量
- 等价于
count(1)
COUNT(column名)- 解释
- 统计某一列中 非NULL行 的数量
- 前面可以加
DISTINCT做去重 - 可配合HAVING使用
GROUP BY id HAVING COUNT(payment) > 20
- 解释
-
统计总量
SUM(column名)- 解释
- 计算所有聚合列中 非NULL行 的和
- 对于无法计算的可能会出null
- 可以用
COALESCE(SUM(amount),0)保证至少是0
- 前面可以加
DISTINCT做去重 - 可配合
HAVING使用GROUP BY id HAVING SUM(amount) > 20
- 计算所有聚合列中 非NULL行 的和
- 解释
-
统计平均值
AVG(column名)- 计算所有聚合列中 非NULL行 的和 再 除以这些列的数量
- 可以对计算结果保留两位小数
::numeric(10,2)
-
求最大和最小
最大值/最小值 MAX()/MAX()
聚合函数-拼接
-
拼成一行字符串
STRING_AGG(表达式, '分割符' ORDER BY 排序规则)- 解释
- 表达式可由多个列组成
column1 || '-' || column2 - 分隔符后面可加排序,指定以什么顺序拼接
- 表达式可由多个列组成
- 例子
STRING_AGG ( a.first_name || ' ' || a.last_name, ',' ORDER BY a.first_name, a.last_name )
- 解释
-
拼成一个数组
ARRAY_AGG(表达式 ORDER BY 排序规则)- 解释
- 表达式可由多个列组成
- 表达式后面可加排序,指定元素以什么顺序排列
- 例子
ARRAY_AGG ( a.first_name || ' ' || a.last_name ORDER BY first_name )
- 解释