Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhóm MySQL từ quý đến kỳ

Đây là một vấn đề khoảng trống và đảo. Bạn có thể giải quyết nó bằng các hàm cửa sổ (chỉ có sẵn trong 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)

Ý tưởng là xây dựng các nhóm bản ghi liền kề bằng cách sử dụng tổng tích lũy:mỗi khi có khoảng cách không phải là 15 phút, tổng sẽ tăng lên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm và thay đổi các thẻ XML trong PHP

  2. Tìm kiếm SQL nhiều giá trị trong cùng một trường

  3. nhập cơ sở dữ liệu từ xa vào localhost

  4. 1045, Quyền truy cập bị từ chối đối với người dùng 'tên người dùng' @ 'KHÔNG cục bộ' (sử dụng mật khẩu:CÓ)

  5. Kỹ thuật tốt nhất để lưu vào bộ nhớ đệm kết quả từ các truy vấn không thường xuyên thay đổi