GROUP_ID用于区分重复的分组。
说明
当查询结果中出现重复的分组,您可以通过GROUP_ID来区分这些重复的分组,GROUP_ID将返回一个INTEGER类型的唯一标识来区分。
如果特定分组存在n个重复项,则GROUP_IP返回范围为0
到n-1
的数字。
说明 该函数仅适用于包含GROUP BY子句的SELECT语句。
示例
本示例中表内容如下:
a | b | c
---+---+---
1 | 2 | 3
- 使用
group by rollup(a, b, c)
进行分组,可以生成(a, b, c)
、(a, b)
、(a)
、()
四个不同的分组。查询语句如下:SELECT a, b, c, grouping(a, b, c), group_id() FROM t group by rollup(a, b, c) order by grouping(a, b, c);
查询结果如下:
a | b | c | grouping | group_id ---+---+---+----------+---------- 1 | 2 | 3 | 0 | 0 1 | 2 | | 1 | 0 1 | | | 3 | 0 | | | 7 | 0 (4 rows)
- 使用
group by rollup(a, b, c), a, b
进行分组,也可以生成四个分组,其中会有三个重复的分组(a,b)
,查询语句如下:SELECT a, b, c, grouping(a, b, c), group_id() FROM t group by rollup(a, b, c), a, b order by grouping(a, b, c);
查询结果如下:
a | b | c | grouping | group_id ---+---+---+----------+---------- 1 | 2 | 3 | 0 | 0 1 | 2 | | 1 | 0 1 | 2 | | 1 | 1 1 | 2 | | 1 | 2 (4 rows)
对于首次出现的分组,GROUP_ID的值为0;对于重复的分组, GROUP_ID的值从1开递增。