ウィンドウ集約を使用するグループ化セット
ウィンドウ集約をグループ化 select で使用することができます。次の例のとおりです。
SELECT grp, COUNT(*), sum(COUNT(*)) OVER (ORDER BY COUNT(*) rows
unbounded preceding) FROM emp GROUP BY grp;そのような照会は、グループ化集約を行っている副照会に対して実行するウィンドウ集約照会に変換することによって処理されます。 そのような例を次に示します。
SELECT grp, ct, SUM(ct OVER (ORDER BY ct rows unbounded preceding) FROM
(SELECT grp, COUNT(*) AS ct FROM emp GROUP BY grp) as s;
GRP | COUNT | SUM
----------+-------+-----
gone | 1 | 1
dev | 1 | 2
mkt | 1 | 3
hdev | 1 | 4
adm | 3 | 7
sdev | 7 | 14拡張された group by オプションは、次の例に示すとおり、ウィンドウ集約と組み合わせて使用できます。
SELECT grp, COUNT(*) AS grpcnt, SUM(COUNT(*)) OVER (ORDER BY COUNT(*)
rows unbounded preceding) FROM emp GROUP BY ROLLUP(grp);
これは次のようになります。
SELECT grp, ct, SUM(ct OVER (ORDER BY ct rows unbounded preceding) FROM
(SELECT grp, COUNT(*) AS ct FROM emp GROUP BY ROLLUP(grp)) AS s;
GRP | COUNT | SUM
----------+-------+-----
gone | 1 | 1
dev | 1 | 2
mkt | 1 | 3
hdev | 1 | 4
adm | 3 | 7
sdev | 7 | 14
| 14 | 28