0

我正在尝试实现一个查询,其中我使用聚合来汇总某些值,然后按 mysql 日期函数(月 | 年 | 周)分组。出于明显的原因,这些 group by 子句不会分别返回不存在的月或年或周。我想知道是否有办法得到它们?

4

2 回答 2

0

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

于 2009-04-15T00:03:58.833 回答
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

您需要在虚拟表中包含尽可能多的 consequent NUM,就像您希望报告涵盖的天数一样。

不幸的是,MySQL 没有内置的行生成器

于 2009-04-14T14:13:43.510 回答