微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mysql按工作日分组,填写缺少的工作日

如何解决Mysql按工作日分组,填写缺少的工作日

正常方法left join

select wd.wd, count(t.id)
from (select 1 as wd union all select 2 union all select 3 union all select 4 uion all
      select 5 union all select 6 union all select 7
     ) wd left join
     test t
     on wd.wd = weekday(t.date)
group by wd.wd
order by wd.wd;

解决方法

我有一个MySQL查询问题,该查询按工作日将表中的数据分组。

我需要它来填充数据中缺少的工作日,例如下面的SQL示例中的星期日(工作日7)。

SQL小提琴

MySQL 5.6模式设置

create table test (
`id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,`date` DATETIME
);

INSERT INTO test (`date`) VALUES 
('2016-05-16 00:00:00'),('2016-05-17 00:00:00'),('2016-05-18 00:00:00'),('2016-05-20 00:00:00'),('2016-05-21 00:00:00'),('2016-05-22 00:00:00'),('2016-05-16 00:00:00'),('2016-05-20 00:00:00');

查询1

SELECT WEEKDAY(date) AS weekday,COUNT(id) AS posts
FROM test
GROUP BY WEEKDAY(date)

结果

| weekday | posts |
|---------|-------|
|       0 |     2 |
|       1 |     2 |
|       2 |     2 |
|       4 |     2 |
|       5 |     1 |
|       6 |     1 |

我希望它也返回此行。

|       3 |     0 |

我的完整查询非常复杂,因此希望您能找到一个快速的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。