【发布时间】:2009-04-14 14:07:23
【问题描述】:
我正在尝试实现一个查询,其中我使用聚合来汇总某些值,然后按 mysql 日期函数(月 | 年 | 周)分组。出于明显的原因,这些 group by 子句不会分别返回不存在的月或年或周。我想知道是否有办法获得它们?
【问题讨论】:
我正在尝试实现一个查询,其中我使用聚合来汇总某些值,然后按 mysql 日期函数(月 | 年 | 周)分组。出于明显的原因,这些 group by 子句不会分别返回不存在的月或年或周。我想知道是否有办法获得它们?
【问题讨论】:
您需要创建一个虚拟表:
CREATE TABLE t_dummy (num int PRIMARY KEY);
,填写并在OUTER JOIN中使用:
SELECT @start + INTERVAL num DAY, SUM(mytable.value)
FROM t_dummy
LEFT JOIN
mytable
ON mytable.datetime >= @start + INTERVAL num DAY
AND mytable.datetime < @start + INTERVAL num + 1 DAY
WHERE t_dummy.num BETWEEN @start and @start + @days
您需要在虚拟表中包含与报告涵盖的天数一样多的后续 NUM。
【讨论】:
解决方案是否必须完全在 MySQL 中?如果它是对 Web 应用程序的查询,那么我将编写 Web 应用程序代码以查找丢失的行并将它们插入到输出数据中。
【讨论】: