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

MySQL mengembalikan catatan pertama dan terakhir untuk hasil identik berturut-turut

Cara termudah untuk mendekati ini adalah menggunakan variabel dan saya pikir pendekatan termudah adalah dengan menambahkan dua variabel, satu jumlah "naik" dan yang lainnya jumlah "turun" hingga baris tertentu. Urutan naik tertentu memiliki nilai konstan untuk jumlah "turun" sebelumnya, dan sebaliknya. Logika ini dapat digunakan untuk agregasi.

Kueri yang dihasilkan adalah:

select result, min(time_stamp) as start_time, max(time_stamp) as end_time
from (select r.*,
             (@ups := @ups + (result = 'up')) as ups,
             (@downs := @downs + (result = 'down')) as downs
      from results r cross join
           (select @ups := 0, @downs := 0) vars
      where service_id = 1
      order by time_stamp
     ) r
group by result, (case when result = 'up' then downs else ups end);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kesalahan sintaks MySQL ON DUPLICATE KEY UPDATE

  2. Menghubungkan ke database MySQL

  3. Bagaimana cara menghindari kata-kata yang dicadangkan yang digunakan sebagai nama kolom? MySQL/Buat Tabel

  4. Tidak dapat mengekspor database saya dari meja kerja mysql

  5. Pilih 20 pesanan terakhir dengan menaik - PHP/MySQL