【发布时间】:2015-02-20 10:40:09
【问题描述】:
SELECT DATE_FORMAT(date, "%b") AS month, SUM(total_price) as total
FROM cart
WHERE date <= NOW()
and date >= Date_add(Now(),interval - 12 month)
GROUP BY DATE_FORMAT(date, "%m-%Y")
此查询仅显示现有月份的结果。我需要所有 12 个月的销售额。
输出:
"month" "total"
--------------
"Jun" "22"
"Aug" "30"
"Oct" "19"
"Nov" "123"
"Dec" "410"
所需输出:
"month" "total"
--------------
"Jan" "0"
"Feb" "0"
"Mar" "0"
"Apr" "0"
"May" "0"
"Jun" "22"
"Jul" "0"
"Aug" "30"
"Sep" "0"
"Oct" "19"
"Nov" "123"
"Dec" "410"
【问题讨论】:
-
您将需要某种辅助日期表来获取没有销售的月份。
-
我们可以通过 SELECT 'Jan' AS MONTH UNION SELECT 'Feb' AS MONTH UNION SELECT 'Mar' AS MONTH UNION SELECT 'Apr' AS MONTH UNION SELECT 'May' AS MONTH UNION SELECT ' Jun' AS MONTH UNION SELECT 'Jul' AS MONTH UNION SELECT 'Aug' AS MONTH UNION SELECT 'Sep' AS MONTH UNION SELECT 'Oct' AS MONTH UNION SELECT 'Nov' AS MONTH UNION SELECT 'Dec' AS MONTH
-
为什么
SELECT和GROUP BY使用不同的日期格式? -
在选择中这是我需要的,并在分组中,因为要保持它们的排序
-
@Wasim 让它们保持排序你需要使用
ORDER BY,分组也可以在Jun和Aug上工作
标签: mysql sql zero monthcalendar not-exists