SELECT heading, thedate
,row_number() OVER (PARTITION BY grp ORDER BY thedate) AS rn
FROM (
SELECT *, thedate - (row_number() OVER (ORDER BY thedate))::int AS grp
FROM demo
) sub;
「ランク」について話している間、ウィンドウ関数の結果が必要なようです row_number()
。
- 連続する日のグループを形成します(
grp
の同じ日付 )サブクエリsub
。 - 別の
row_number()
で行に番号を付ける 今回はgrp
で分割された呼び出し 。
ウィンドウ関数はネストできないため、ここでは1つのサブクエリが最低限です。
矛盾するサンプルデータの2番目のバージョンを使用したことに注意してください。結果は、@muの提案
のようになります。 彼のコメントで。
また、重複する日付がないと仮定します。この場合、最初に集計する必要があります。