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

四半期から期間までのMySQLグループ

    これはギャップと島の問題です。ウィンドウ関数で解決できます(MySQL 8.0でのみ使用可能):

    select 
        person,
        min(act_date) start_date,
        max(act_date) end_date
    from (
        select
            t.*,
            sum(act_date <> lag_act_date + interval 15 minute)
                over(partition by person order by act_date) grp
        from (
            select 
                t.*,
                lag(act_date) 
                    over(partition by person order by act_date) lag_act_date
            from mytable t
        ) t
    ) t
    group by person, grp
    order by min(act_date)
    

    累積合計を使用して隣接するレコードのグループを構築するという考え方です。15分ではないギャップがあるたびに、合計が増加します。



    1. Hibernateを使用した配列のマッピング

    2. tomcat7--jdbcdatasource-これはメモリリークを引き起こす可能性が非常に高いです

    3. WordPressでmysqlクエリを実行するにはどうすればよいですか?

    4. SQLServerログインのパスワードを変更する