GROUP_ID用于区分重复的分组。

说明

当查询结果中出现重复的分组,您可以通过GROUP_ID来区分这些重复的分组,GROUP_ID将返回一个INTEGER类型的唯一标识来区分。

如果特定分组存在n个重复项,则GROUP_IP返回范围为0n-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开递增。