mysql每日计数ifnull为零

时间:2015-10-26 19:45:42

标签: mysql

我有一个像

这样的查询
img

这会返回每日计数,但仅限于列cdate中存在的天数,我希望最后X天的所有天数,包括零计数的天数。我怎样才能做到这一点?

cdate格式为%Y-%m-%d

2 个答案:

答案 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子句以获得所需的任意天数。