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

Làm thế nào để nhóm theo tháng và trả về 0 nếu không có giá trị cho tháng nhất định?

Có một bảng của tất cả các tháng và sau đó left join vào bảng của bạn:

SELECT MONTHNAME(m.month) AS mName, 
    MONTH(m.month) AS mOrder, 
    ifnull(sum(amount),0) AS total_num 
from months m
left join income i
on m.month = i.date

GROUP BY mOrder 
ORDER BY mOrder DESC

Nếu bạn không muốn tạo months bảng thì bạn có thể:

(select STR_TO_DATE('01/01/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/02/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/03/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/04/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/05/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/06/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/07/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/08/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/09/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/10/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/11/2016', '%d/%m/%Y') as month union 
 select STR_TO_DATE('01/12/2016', '%d/%m/%Y') as month)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Chuyển đổi MM / DD / YY sang nhãn thời gian Unix

  2. Chỉ lấy các ký tự từ bên trái và bên phải của một ký tự cụ thể trong mySQL

  3. Lệnh SQL RENAME TABLE

  4. Không thể chuyển đổi giá trị ngày / giờ của MySQL thành System.DateTime. Không thể lưu trữ giá trị 0/0/0000 0:00:00?

  5. MySQL:Tại sao thoát không hoạt động trong toán tử LIKE?