当前位置: 首页 > 面试题库 >

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

司马飞鸿
2023-03-14
问题内容

我有一个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-17 00:00:00'),
('2016-05-18 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 |

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


问题答案:

正常方法是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;


 类似资料:
  • 问题内容: 我想知道如何使用循环根据sql中各组的开始/结束日期来填充零值缺失日期,以便每个组中都有连续的时间序列。我有两个问题。 如何为每个组循环播放? 如何使用每个组的开始/结束日期来动态填写缺少的日期? 我的输入和预期输出如下所示。 输入: 我有一张表A喜欢 我还有一张表B,可用于与A左联接以填写缺少的日期。 如何使用A和B在sql中生成以下输出? 输出: 请给我您的代码和建议。提前非常感谢

  • 问题内容: 我有一个数据框架,如下所示 我想做的是在date列中找到最小和最大日期,并扩展该列使其具有所有日期,同时为该列填写。所以所需的输出是 问题答案: 初始数据框: 首先,将日期转换为日期时间: 然后,生成日期和唯一用户: 这将允许您创建一个MultiIndex: 您可以使用它来重新索引您的DataFrame: 然后可以按用户排序:

  • 问题内容: 天哪,它必须是如此简单,但我正在为“填写缺失的数据”问题而苦苦挣扎。 我有一个表,该表具有以下带有一些插入数据的列。 我想要的这张表是从2014年起的全部月份的付款值。 我尝试在select中使用IFNULL,但失败如此严重…而且stackoverflow的搜索结果通常会结合两个或多个表来处理信息。解决这个问题的最快,最好的解决方案是什么? 问题答案: 对于缺少的月份,您可以对所有月份

  • 我正在使用python 2.7在windows 10 64bit上工作。 这些是缺少durng pyinstaller的libs:9661警告:lib未找到:libeay32.dll 10082警告:lib未找到:ssleay32.dll 11941警告:lib未找到:libmysql.dll 此外,这些都是在构建文件夹中创建的WarnMain.txt中丢失的dll。他们太多了,不能在这里展示。

  • 问题内容: 这个问题已经在这里有了答案 : MySQL如何填充范围内的缺失日期? (5个答案) 2年前关闭。 我有这个查询,我想用一些值(例如零…)填充缺失的日期。 结果如下: 如何用零值填充缺失的日期?有人有主意吗? 我需要这些数据来进行 图表 预览。 问题答案: 通常,您可以使用以下方法在MySQL中生成一系列N个整数: 请注意,您联接的表(someTable)必须至少具有N行。 上面的-1是

  • 问题内容: 我需要运行按周分组的报告。这可以通过使用来完成,但是客户希望设置标记星期几的星期几。因此可以是星期二,星期三等。如何将其按查询分组? datetime列的类型为unix时间戳。 问题答案: 该函数采用可选的第二个参数来指定一周​​的开始时间: 此函数返回日期的星期数。两种参数形式的,您可以指定星期是从星期日还是星期一开始,以及返回值应在0到53还是1到53的范围内。 但是,只能将其设置