売上げが入っていない行を含む、すべての行をカウントするには、COUNT(*)を使用します。現在行より後のパーティションに残っている行の数をカウントする例を次に示します。
SELECT city, kind, sales, profit, COUNT(*) OVER (PARTITION BY city, kind ORDER BY profit DESC ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING) FROM activity_month; city kind sales profit Remaining Count(*) ------- -------- ----- ------ ------------------ LA Canvas 20 120 ? LA Canvas 125 190 1 LA Canvas 45 320 2 LA Canvas 125 400 3 LA Leather ? ? ? LA Leather 20 40 1 Seattle Canvas 15 30 ? Seattle Canvas 20 30 1 Seattle Canvas 20 100 2 Seattle Leather ? ? ? Seattle Leather 35 50 1
ウィンドウ指定で指定する並替え順序によって関数の適用対象の行の並替え順序が定義されますが、それによって結果の順序が定義されるわけではないことに注意してください。
この例では計算にはDESC並替え順序が指定されていますが、結果はその逆の順序で戻されています。
結果を順序付けするには、次のように、SELECT文でORDER BY句を使用します。
SELECT city, kind, sales, profit, COUNT(*) OVER (PARTITION BY city, kind ORDER BY profit DESC ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING) FROM activity_month ORDER BY city, kind, profit DESC; city kind sales profit Remaining Count(*) ------- -------- ----- ------ ------------------ LA Canvas 125 400 3 LA Canvas 45 320 2 LA Canvas 125 190 1 LA Canvas 20 120 ? LA Leather 20 40 1 LA Leather ? ? ? Seattle Canvas 20 100 2 Seattle Canvas 20 30 1 Seattle Canvas 15 30 ? Seattle Leather 35 50 1 Seattle Leather ? ? ?