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

Mysql tổng hợp các bản ghi theo tháng trong 12 tháng qua

Bạn cần thực hiện phép nối bên ngoài với bảng chứa một hàng cho mỗi tháng. Giả sử bạn không có bảng như vậy, bạn có thể tạo bảng này nhanh chóng bằng truy vấn UNION được mã hóa cứng:

SELECT * FROM
    (SELECT DATE_FORMAT(now(), "%b") as Month
     UNION
     SELECT DATE_FORMAT(now() - INTERVAL 1 MONTH), "%b")
     UNION
     SELECT DATE_FORMAT(now() - INTERVAL 2 MONTH), "%b")
     UNION
     ...
     SELECT DATE_FORMAT(now() - INTERVAL 11 MONTH), "%b")) AS Months
LEFT JOIN (SELECT DATE_FORMAT(drives.timestamp, "%b") AS Month,
                 drives.timestamp,
                 DATE_FORMAT(drives.timestamp, "%d-%m-%Y %H:%i:%s") AS Exact_date,
                 drives.departure,
                 drives.destination,
                 drives.route,
                 CONCAT(drivers.name, " ", drivers.surname) as driver,
                 drivers.id as driver_id
                 FROM drives, drivers WHERE drives.driver = drivers.id 
                 AND drives.timestamp > DATE_SUB(now(), INTERVAL 12 MONTH)) data
ON Months.Month = data.Month
ORDER BY data.timestamp

Bất kỳ tháng nào không có bản ghi sẽ có một hàng với NULL trong các cột dữ liệu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xóa bộ nhớ cache truy vấn trong mysql?

  2. Thay đổi định dạng ngày trong truy vấn

  3. Làm cách nào tôi có thể thực hiện so sánh chuỗi phân biệt chữ hoa chữ thường SQL trên MySQL?

  4. Codeigniter hoạt động chọn bản ghi, kết hợp bên trái, đếm

  5. Xuất cơ sở dữ liệu mysql / bảng mysql ở định dạng json thông qua dòng lệnh HOẶC PHP