使用具有月/周/年日期函数的MySql group by子句时,获得不存在的月/周/年

时间:2009-04-14 14:07:23

标签: mysql datetime group-by

我正在尝试实现一个查询,其中我使用聚合来对某些值求和,然后按mysql日期函数(月|年|星期)进行分组。由于显而易见的原因,这些group by子句不会分别返回非存在月或年或OR周。我想知道是否有办法获得它们?

2 个答案:

答案 0 :(得分:0)

您需要创建一个虚拟表:

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 does not have a built-in row generator

答案 1 :(得分:0)

解决方案是否必须完全在MySQL中?如果它是对Web应用程序的查询,那么我会对Web应用程序进行编码以查找缺少的行并将它们插入到输出数据中。