我正在尝试实现一个查询,其中我使用聚合来汇总某些值,然后按 mysql 日期函数(月 | 年 | 周)分组。出于明显的原因,这些 group by 子句不会分别返回不存在的月或年或周。我想知道是否有办法得到它们?
Ketan
问问题
759 次
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
,就像您希望报告涵盖的天数一样。
不幸的是,MySQ
L 没有内置的行生成器。
于 2009-04-14T14:13:43.510 回答