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

Kesulitan dengan panjang jeda variabel

Alih-alih membandingkan dengan tanggal pembatalan di baris sebelumnya, Anda perlu membandingkan dengan tanggal pembatalan terbaru di semua baris sebelumnya. SQL standar memiliki opsi ABAIKAN NULLS untuk mencapai ini, tetapi MySQL tidak mendukungnya. Untungnya dalam kasus Anda itu dapat ditulis ulang menggunakan Maks Kumulatif:

select t.*,
       datediff(start, prev_cancelled) as num_days_since_cancel
from (select dt.*,
             max(cancelled) over -- latest date per id
             (partition by id 
              order by start
              rows between unbounded preceding and 1 preceding) as prev_cancelled
      from dt
     ) t
-- remove negative duration
where datediff(start, prev_cancelled) >= 0;

Lihat biola



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak termasuk catatan di mana subquery mengembalikan hasil yang harus saling eksklusif

  2. Bagaimana cara mengubah baris tabel mysql menjadi kolom

  3. Kunci eksklusif MySQL

  4. Permintaan Pilihan Rantai Mysql

  5. Bergabunglah dengan dua tabel dan ekstrak harga terendah dengan beberapa kondisi (multiple sku)