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

SQL:đếm tất cả các bản ghi có giá trị xuất hiện liên tiếp cho từng bộ thiết bị và trả về số lượng cao nhất

Đây là một dạng của khoảng trống và đảo. Bạn có thể sử dụng sự khác biệt của số hàng để lấy các đảo:

select device_id, speed, count(*) as num_times
from (select t.*,
             row_number() over (partition by device_id order by datetime) as seqnum,
             row_number() over (partition by device_id, speed order by datetime) as seqnum_s
      from t
     ) t
group by device_id, speed, (seqnum - seqnum_s);

Sau đó, để đạt được giá trị tối đa, hãy sử dụng một lớp chức năng cửa sổ khác:

select device_id, speed, num_times
from (select device_id, speed, count(*) as num_times,
             row_number() over (partition by device_id order by count(*) desc) as seqnum
      from (select t.*,
                   row_number() over (partition by device_id order by datetime) as seqnum,
                   row_number() over (partition by device_id, speed order by datetime) as seqnum_s
            from t
           ) t
      group by device_id, speed, (seqnum - seqnum_s)
     ) ds
where seqnum = 1;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ALTER TABLE bị treo

  2. Cách in Datagridview có bảng trong VB

  3. Lưu trữ dữ liệu thống kê, tôi cần DECIMAL, FLOAT hay DOUBLE?

  4. Cách kết nối Cơ sở dữ liệu MySQL với Trang web PHP

  5. Truy xuất bản ghi cuối cùng trong mỗi nhóm - MySQL