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

Temukan celah tanggal dengan mysql

Ini akan memberikan hasil yang benar:

select
  id,
  min(startDate) as startFreeDate,
  count(*) - (endDate is null) numFreeDays
from (
  select
    pb1.id,
    pb1.bookingDate startDate,
    min(pb2.bookingDate) endDate
  from
    pricesBookings pb1 left join pricesBookings pb2
    on pb1.id=pb2.id
       and pb2.price>0
       and pb2.bookingDate>pb1.bookingDate
  where
    pb1.price=0
  group by
    pb1.id,
    pb1.bookingDate
) s
group by id, endDate
order by id, startDate

lihat di sini .

Jika Anda perlu mencari semua slot gratis, misalnya, 14 hari, Anda dapat menambahkan HAVING:

group by id, endDate
having count(*) - (endDate is null) >= 14
order by id, startDate


  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 - UPDATE query berdasarkan SELECT Query

  2. Jalankan SQL mentah dalam migrasi

  3. Ganti nama kolom di MySQL

  4. Menetapkan xml yang dihasilkan oleh loop sementara ke variabel

  5. perbarui kolom tabel setelah memasukkan catatan baru menggunakan pemicu MySQL