Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL:policz wszystkie rekordy z kolejnymi wystąpieniami tej samej wartości dla każdego zestawu urządzeń i zwróć największą liczbę

Jest to forma luk i wysp. Aby uzyskać wyspy, możesz użyć różnych numerów wierszy:

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);

Następnie, aby uzyskać maksimum, użyj kolejnej warstwy funkcji okna:

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. Jak pobrać 2 razy w MYSQL PDO bez FETCHALL

  2. szybkość wstawiania w mysql vs cassandra

  3. Utwórz nowego użytkownika w MySQL i daj mu pełny dostęp do jednej bazy danych

  4. Silnik przechowywania Mysql dla tabeli dziennika

  5. mysql5.58 unstart server w mac os 10.6.5