Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm khoảng trống ngày với mysql

Điều này sẽ cho kết quả chính xác:

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

xem nó tại đây .

Nếu bạn cần tìm kiếm tất cả các vị trí miễn phí, chẳng hạn như 14 ngày, bạn có thể thêm 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. CHỌN VÀO OUTFILE không thể ghi vào tệp

  2. mysql error 1364 Trường không có giá trị mặc định

  3. Có cách nào để truy vấn xem trường mảng có chứa một giá trị nhất định trong Doctrine2 không?

  4. Tại sao INNER JOIN không bằng (! =) Bị treo mãi mãi

  5. Sự khác biệt giữa giá trị NULL và giá trị trống trong Mysql