Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL:hitung semua catatan dengan kemunculan berturut-turut dengan nilai yang sama untuk setiap set perangkat dan kembalikan hitungan tertinggi

Ini adalah bentuk jurang-dan-pulau. Anda dapat menggunakan perbedaan nomor baris untuk mendapatkan pulau:

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

Kemudian, untuk mendapatkan hasil maksimal, gunakan lapisan lain dari fungsi jendela:

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 - kembalikan kolom pertama sekali dan semua data kolom yang sesuai

  2. Permintaan mysqli dengan pernyataan variabel SET (yaitu beberapa kueri)

  3. Bagaimana cara menggunakan array nilai dari PHP dalam klausa 'IN' dari kueri mysql?

  4. Docker Tidak dapat menautkan ke wadah yang tidak berjalan

  5. Temukan jumlah total hasil dalam kueri mySQL dengan offset+limit