sql >> データベース >  >> RDS >> Oracle

連続するレコードを日付でグループ化するOracleSQLクエリ

    start_dateを使用できると仮定します 隣接するレコードを識別する(つまり、ギャップがない)場合は、行番号の違いのアプローチを使用できます。

    select id, min(start_date) as mn_date, max(end_date) as mx_date, rate
    from (select t.*,
                 row_number() over (partition by id order by start_date) as seqnum_i,
                 row_number() over (partition by id, rate order by start_date) as seqnum_ir
          from t
         ) t
    group by id (seqnum_i - seqnum_ir), rate;
    

    これがどのように機能するかを確認するには、サブクエリの結果を確認してください。 2つの行番号の違いが、同じレートで隣接するレコードのグループをどのように定義するかを「確認」できるはずです。



    1. PostgreSQLにファイルを保存する際のパフォーマンスの問題はありますか?

    2. PHPとMySQLを使用してCSVファイルをインポートおよびエクスポートする方法

    3. postgresql8.3.7でパーティションテーブルのインデックスを使用するにはどうすればよいですか?

    4. MySQLで過去30日間の日付を選択するにはどうすればよいですか?