GROUP BY 子句 - Amazon Redshift

GROUP BY 子句

GROUP BY 子句标识查询的分组列。必须在查询使用标准函数(例如,SUM、AVG 和 COUNT)计算聚合时声明分组列。有关更多信息,请参阅 聚合函数

语法

GROUP BY group_by_clause [, ...] group_by_clause := { expr | GROUPING SETS ( () | group_by_clause [, ...] ) | ROLLUP ( expr [, ...] ) | CUBE ( expr [, ...] ) }

参数

expr

列或表达式的列表必须匹配查询的选择列表中的非聚合表达式的列表。例如,考虑以下简单查询。

select listid, eventid, sum(pricepaid) as revenue, count(qtysold) as numtix from sales group by listid, eventid order by 3, 4, 2, 1 limit 5; listid | eventid | revenue | numtix -------+---------+---------+-------- 89397 | 47 | 20.00 | 1 106590 | 76 | 20.00 | 1 124683 | 393 | 20.00 | 1 103037 | 403 | 20.00 | 1 147685 | 429 | 20.00 | 1 (5 rows)

在此查询中,选择列表包含两个聚合表达式。第一个聚合表达式使用 SUM 函数,第二个聚合表达式使用 COUNT 函数。必须将其余两个列(LISTID 和 EVENTID)声明为分组列。

GROUP BY 子句中的表达式也可以使用序号来引用选择列表。例如,上一个示例的缩略形式如下。

select listid, eventid, sum(pricepaid) as revenue, count(qtysold) as numtix from sales group by 1,2 order by 3, 4, 2, 1 limit 5; listid | eventid | revenue | numtix -------+---------+---------+-------- 89397 | 47 | 20.00 | 1 106590 | 76 | 20.00 | 1 124683 | 393 | 20.00 | 1 103037 | 403 | 20.00 | 1 147685 | 429 | 20.00 | 1 (5 rows)
GROUPING SETS/ROLLUP/CUBE

您可以使用聚合扩展 GROUPING SETS、ROLLUP 和 CUBE 在单个语句中执行多个 GROUP BY 操作的工作。有关聚合扩展和相关函数的更多信息,请参阅聚合扩展