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

数列から不変の値の間隔を取得します

    隣接する値のグループを識別したい。 1つの方法は、lag()を使用することです。 シーケンスの開始を検索し、次に累積合計を使用してグループを識別します。

    もう1つの方法は、行番号の違いです。

    select value, min(id) as from_id, max(id) as to_id
    from (select t.*,
                 (row_number() over (order by id) -
                  row_number() over (partition by val order by id
                 ) as grp
          from table t
         ) t
    group by grp, value;
    


    1. Oracle:月ごとのパーティションテーブル

    2. RLIKEがMariaDBでどのように機能するか

    3. すべてのカテゴリのトップ10製品を入手

    4. 2つのパーティショニングの特殊性