我在mysql数据库中有一些事件及其日期的表,我想返回每个工作日的事件计数,如下所示:

SELECT DAYNAME(start_date) AS day, count(DAYNAME(start_date)) as number FROM events GROUP BY day


在发生某些事件的日子里效果很好,但不会显示空白的日子。我知道如果我有一个带有星期几的简单表,我可以做一个简单的LEFT JOIN并显示ALL days,当天为空时,计数为0。但是,有没有更简单的方法无需创建该表呢?还有其他想法吗?

提前致谢

最佳答案

一句话“不”。原因是您尝试选择不存在的数据!

但是,由于一周中只有7天,您可以动态构建简单的“一周中的天”表:

select dayname('2011-10-31') union
select dayname('2011-11-01') union
select dayname('2011-11-02') union
select dayname('2011-11-03') union
select dayname('2011-11-04') union
select dayname('2011-11-05') union
select dayname('2011-11-06');


然后LEFT OUTER JOIN从中进入事件表(如您所述)。这将允许您运行查询,而无需创建和填充简单表。

尽管为了重用和整理,我将在一周中的几天创建并填充简单表并使用它。

关于mysql - 计算某些天为空的mysql的工作日发生次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7993653/

10-08 20:48