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

最小日と最大日にGROUPBYを作成する方法

    これは、日付チェーンに関する一種のギャップと島の問題です。 left joinを使用することをお勧めします 島がどこから始まるかを見つけるために。次に、累積合計と集計:

    select emp_id, title, min(start_date), max(end_date)
    from (select t.*,
                 sum(case when tprev.emp_id is null then 1 else 0 end) over
                     (partition by t.emp_id, t.title order by t.start_date) as grouping
          from t left join
               t tprev
               on t.emp_id = tprev.emp_id and
                  t.title = tprev.title and
                  t.start_date = tprev.end_date + 1
         ) t
    group by grouping, emp_id, title;
    


    1. 複数のデータベースに対するMySQLGrant

    2. MySQLINSERTINTOテーブルSELECTFROManother_table、inprocedure

    3. PHP定数が定義されていません

    4. mysqlは「フィールドリスト」に不明な列「mac」をスローします