我有一个像
这样的查询img
这会返回每日计数,但仅限于列cdate中存在的天数,我希望最后X天的所有天数,包括零计数的天数。我怎样才能做到这一点?
cdate格式为%Y-%m-%d
答案 0 :(得分:0)
此查询仅返回表tabl
中可用的数据。
要获取所有日期的信息,您需要一些包含日期行的表。通常,我会使用日期维度表并将其与tabl
连接,如下所示:
SELECT ISNULL(count(1), 0), cdate
FROM DimDate D
LEFT JOIN tabl T ON D.Date = T.cdate
GROUP BY YEAR(D.Date), MONTH(D.Date), DAY(D.Date);
答案 1 :(得分:0)
如果您有数字表,那么您可以使用它。否则,你可以使用一个技巧。像这样:
select date_sub(curdate, 1 - interval n.n day) as thedate,
count(t.cdate)
from (select (@rn := @rn + 1) as n
from tabl
limit 100
) n left join
tabl t
on t.cdate = date_sub(curdate, 1 - interval n.n day)
group by n.n;
这基本上使用您现有的表来计算" n"天(在这种情况下为100)。假设表格足够大,您可以调整limit
子句以获得所需的任意天数。