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

Tính toán tổng số lượng thiết bị cho một phạm vi ngày

Tôi đã bắt đầu với SQL sau để thu thập tất cả các phạm vi ngày giao nhau với phạm vi đã cho:

SELECT MAX(available) - IFNULL(SUM(amountInSch), 0)
FROM Table1
LEFT JOIN Table3 USING (eqid)
LEFT JOIN Table2 USING (scheduleid)
WHERE DATE(startDate) <= '2012-08-27' AND DATE(endDate) >= '2012-08-27'
  AND endTime > '08:30' AND startTime < '12:00'
  AND eqid = 1

Fiddle

Đây chỉ là phần đầu tiên. Tiếp theo, bạn phải tìm ra những điểm chồng chéo có thể xảy ra; điều này sẽ không thực tế khi làm với SQL, vì vậy tôi khuyên bạn nên làm điều này trong PHP.

Rất tiếc, thuật toán chung mà tôi chọn là O (n ** 2), nó diễn ra như thế này:

  • tạo một dòng thời gian (được phân chia theo từng ngày) với thời gian là trục hoành
  • lặp lại qua mọi phạm vi ngày / giờ và đánh dấu thời gian của cạnh trái và cạnh phải của nó để tạo các phân đoạn thời gian của mọi hoán vị có thể có.
  • bằng cách sử dụng các phân đoạn, bạn tính tổng theo chiều dọc cho các phần chồng chéo và bạn lấy số tiền tối đa hàng ngày.

Hy vọng điều đó sẽ hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao Java không thể kết nối với MySQL 5.7 sau khi cập nhật JDK mới nhất và nên sửa lỗi này như thế nào? (ssl.SSLHandshakeException:Không có giao thức thích hợp)

  2. Làm cách nào để lặp lại id tài nguyên # 6 từ phản hồi MySql trong PHP?

  3. Tham gia Mysql cung cấp các hàng trùng lặp

  4. MYSQLI_NUM có nghĩa là gì và làm gì?

  5. MYSQL - Chèn Nếu Bảng trống