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开递增。
该文章对您有帮助吗?