GROUP_ID

唯一标识返回重复分组集的重复 GROUP BY 查询集。此函数返回一个或多个以零 (0) 开头的整数作为标识符。

对于特定分组的重复数量 n,GROUP_ID 返回一组连续的数字 0 到 n–1。对于它遇到的每个第一个唯一组,GROUP_ID 返回值 0。如果 GROUP_ID 再次发现了相同的分组,函数会返回 1,然后对下一个发现的分组返回 2,以此类推。

行为类型

不可变

语法

GROUP_ID ()

示例

此示例显示了 GROUP_ID 如何在查询产生重复分组时创建唯一标识符。对于费用表,以下查询按照费用类别和年份对结果进行分组,并 为这两个列计算汇总值。这些结果在类别和 NULL 方面具有重复分组。第一个分组的 GROUP_ID 为 0,第二个分组的 GROUP_ID 为 1。

=> SELECT Category, Year, SUM(Amount), GROUPING_ID(Category, Year),
   GROUP_ID() FROM expenses GROUP BY Category, ROLLUP(Category,Year)
   ORDER BY Category, Year, GROUPING_ID();
  Category   | Year |  SUM   | GROUPING_ID | GROUP_ID
-------------+------+--------+-------------+----------
 Books       | 2005 |  39.98 |           0 |        0
 Books       | 2007 |  29.99 |           0 |        0
 Books       | 2008 |  29.99 |           0 |        0
 Books       |      |  99.96 |           1 |        0
 Books       |      |  99.96 |           1 |        1
 Electricity | 2005 | 109.99 |           0 |        0
 Electricity | 2006 | 109.99 |           0 |        0
 Electricity | 2007 | 229.98 |           0 |        0
 Electricity |      | 449.96 |           1 |        1
 Electricity |      | 449.96 |           1 |        0

另请参阅