mysql - Mysql填补日期空白
问题描述
我正在尝试从 dataTable 获取过去 7 天的值,如果没有特定日期的数据,则应在输出中填写零:
SELECT calendar.dt, COALESCE(SUM(weight*price),0) AS amount
FROM
(SELECT CURRENT_DATE AS dt
UNION ALL SELECT CURRENT_DATE - INTERVAL 1 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 2 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 3 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 4 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 5 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 6 DAY) calendar
LEFT JOIN dataTable ON calendar.dt = DATE(dataTable.sold_at);
上面的请求只返回一条记录:
请指教 SQL 请求有什么问题?
解决方案
似乎group by
失踪了。
SELECT calendar.dt, COALESCE(SUM(weight*price),0) AS amount
FROM
(SELECT CURRENT_DATE AS dt
UNION ALL SELECT CURRENT_DATE - INTERVAL 1 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 2 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 3 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 4 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 5 DAY
UNION ALL SELECT CURRENT_DATE - INTERVAL 6 DAY) calendar
LEFT JOIN dataTable ON calendar.dt = DATE(dataTable.sold_at)
Group by calendar.dt
;
SQL小提琴链接:http ://sqlfiddle.com/#!9/f151a8e/4
推荐阅读
- java - 如何使用列值过滤器查询并获取原始值的最后一个值?
- java - 如何从 npm ls 树输出中提取根级元素?
- python-2.7 - 如何在使用 fit_generator 拟合 keras 模型时修复“MemoryError”?
- python - 重复的请求发布到scrapy FormRequest
- java - 如何使用 Lamda 表达式根据另一个地图过滤地图的地图
- service-worker - 重新联机时后台同步不刷新页面
- python-3.x - 如何在不聚合的情况下根据唯一的字符串值将熊猫数据帧拆分为多个数据帧
- javascript - 结果作为对象,其中键是数组中的每个值
- qstring - arg 包含 % 字符时的 QString arg() 问题...如何防止递归替换?
- html - 需要解释 z-index 行为