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

Cách nhận giá trị cho mỗi ngày trong tháng

Điều này thực sự khó thực hiện trong SQL. Một cách để làm điều đó là có một câu lệnh chọn dài với UNION ALLs để tạo ra các số từ 1 đến 31. Điều này thể hiện nguyên tắc nhưng tôi dừng lại ở 4 cho rõ ràng:

SELECT MonthDate.Date, COALESCE(SUM(`values`), 0) AS Total
FROM (
    SELECT 1 AS Date UNION ALL
    SELECT 2 UNION ALL
    SELECT 3 UNION ALL
    SELECT 4 UNION ALL
    --
    SELECT 28 UNION ALL
    SELECT 29 UNION ALL
    SELECT 30 UNION ALL
    SELECT 31) AS MonthDate
LEFT JOIN Table1 AS T1
ON MonthDate.Date = DAY(T1.Date)
AND MONTH(T1.Date) = 1 AND YEAR(T1.Date) = 2010
WHERE MonthDate.Date <= DAY(LAST_DAY('2010-01-01'))
GROUP BY MonthDate.Date

Có thể tốt hơn nếu sử dụng một bảng để lưu trữ các giá trị này và thay vào đó kết hợp với nó.

Kết quả:

1, 34
2, 10
3, 0
4, 7


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python:MySQLdb và Thư viện không được tải:libmysqlclient.16.dylib

  2. Sử dụng UNION và ORDER BY không chính xác?

  3. Làm thế nào để truy cập kết nối mysqli trong một lớp khác trên trang khác?

  4. Tên bảng dưới dạng tham số sử dụng câu lệnh chuẩn bị sẵn PDO / MySQL

  5. Kết quả 'n' hàng đầu cho mỗi từ khóa