Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Group от тримесечия до периоди

Това е проблем с пропуските и островите. Можете да го разрешите с прозоречни функции (достъпни само в 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поръчайте SQL от най-силния LIKE?

  2. MySQL default date() + 14 дни, за колона?

  3. Как да отпечатате Datagridview има таблица във VB

  4. MySQL 8.0 - Клиентът не поддържа протокол за удостоверяване, поискан от сървъра; помислете за надграждане на MySQL клиента

  5. мигрира от postgres към mysql, причинявайки странни грешки Mysql2::Error:MySQL сървърът е изчезнал