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

Chọn tất cả các tháng trong khoảng ngày nhất định, bao gồm cả những tháng có 0 giá trị

Tôi đồng ý với câu trả lời của Lieven, hãy tạo một bảng chứa tất cả các tháng bạn có thể yêu cầu và sử dụng bảng đó để "THAM GIA TRÁI" vào bảng kết quả của bạn. Hãy nhớ rằng, đây là một bảng thực sự nhỏ, chỉ có 365 (ish) hàng mỗi năm dữ liệu bạn có ... Và bạn có thể dễ dàng viết một số mã để điền vào bảng này lúc đầu

Chúng tôi làm điều này ở đây và nó mang lại rất nhiều lợi ích, ví dụ:hãy tưởng tượng một bảng dữ liệu hàng tháng với các trường sau (và bất kỳ trường nào khác mà bạn có thể nghĩ đến!) Được điền đầy đủ cho tất cả các tháng trong một phạm vi nhất định;

  • Ngày (Ví dụ:2009-04-01)
  • Ngày (Ví dụ:1)
  • Ngày trong tuần (Ví dụ:Thứ Tư)
  • Tháng (Ví dụ:4)
  • Năm (Ví dụ:2009)
  • Năm tài chính (Ví dụ:2009/10)
  • Quý tài chính (Ví dụ:Quý 1 năm 2009)
  • Quý theo lịch (Ví dụ:Quý 2 năm 2009)

Sau đó, kết hợp điều này với truy vấn của bạn ở trên, như sau;

SELECT `DT`.`myYear`, `DT`.`myMonth`, 
           AVG(`myTable`.`value1`) as avg_value_1, 
           AVG(`myTable`.`value2`) as avg_value_2

FROM `dateTable` as DT
LEFT JOIN `myTable`
    ON `dateTable`.`myDate` = `myTable`.`save_date`

WHERE `dateTable`.`myDate` BETWEEN '2009-01-01' AND '2009-07-01'

GROUP BY `DT`.`myYear`, `DT`.`myMonth`

Có thể có một số lỗi trong mã SQL của tôi vì tôi không thể tạo bảng kiểm tra, nhưng hy vọng bạn sẽ nhận được mã chính và thay đổi phù hợp với nhu cầu của mình!

Sử dụng điều này, bạn có thể thay đổi mệnh đề "GROUP BY" của mình thành bất kỳ mệnh đề nào bạn có trong bảng "dateTable", điều này có thể cho phép bạn dễ dàng báo cáo theo Quý tài chính, Tháng, Ngày, Ngày trong tuần, v.v.

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. Cách kết nối với cơ sở dữ liệu bằng Sequel Pro

  2. Làm thế nào để chuyển đổi một chuỗi thành ngày tháng trong MySQL?

  3. Câu lệnh MySQL TABLE

  4. Chọn hàng cuối cùng trong MySQL

  5. Làm cách nào để thoát% khỏi truy vấn mysql python