GROUP_ID
GROUP_ID関数は、GROUP BY句によるSELECT問合せの結果の重複するグループを識別します。この関数は一意のグループに数値0(ゼロ)を戻し、後続の重複するグループ行は1から始まるより大きな数値を受け取ります。GROUP_ID関数は、問合せ結果から重複グループを除外します。重複する値を生成する可能性がある複雑な問合せを行う場合、HAVING GROUP_ID() = 0条件を指定することによって重複する行を除外できます。
ノート:
GROUP BY句の詳細は、「GROUP BY句」を参照してください。HAVING句の詳細は、「SELECT」を参照してください。
構文
GROUP_ID関数は、1つのGROUP BY句を含むSELECT文にのみ適用できます。選択リストおよびSELECT問合せのHAVING句で使用できます。
GROUP_ID()
パラメータ
GROUP_IDにはパラメータがありません。
例
次の例では、GROUP_IDがどのように一意のグループに0(ゼロ)を戻し、重複グループを識別するために0より大きい数値を戻すのかを示します。次の例では、部門番号、マネージャID、およびマネージャ内の給与合計を出力します。結果の出力は、マネージャおよび部門でROLLUP句を使用してグループ化され、超集合結果を示します。
Command> SELECT department_id as DEPT, manager_id AS MGR,
GROUP_ID(), SUM(salary) as SALARY
FROM employees
WHERE manager_id > 146
GROUP BY manager_id, ROLLUP(manager_id, department_id)
ORDER BY manager_id, department_id;
DEPT, MGR, EXP, SALARY
< 80, 147, 0, 46600 >
< <NULL>, 147, 1, 46600 >
< <NULL>, 147, 0, 46600 >
< 80, 148, 0, 51900 >
< <NULL>, 148, 0, 51900 >
< <NULL>, 148, 1, 51900 >
< 80, 149, 0, 43000 >
< <NULL>, 149, 0, 7000 >
< <NULL>, 149, 0, 50000 >
< <NULL>, 149, 1, 50000 >
< 20, 201, 0, 6000 >
< <NULL>, 201, 0, 6000 >
< <NULL>, 201, 1, 6000 >
< 110, 205, 0, 8300 >
< <NULL>, 205, 0, 8300 >
< <NULL>, 205, 1, 8300 >
16 rows found.