gpt4 book ai didi

mysql - 查找并发日期范围中的差距 - MySQL

转载 作者:行者123 更新时间:2023-11-29 00:21:10 25 4
gpt4 key购买 nike

我有一张如下所示的表格。实际上有 50,000 个用户,技术上每个用户的范围数量是无限的。对日期间隔、开始、结束、重叠等没有限制。

User     From            To
A 2011-01-03 2013-04-09
A 2012-04-16 2012-03-08
A 2012-12-11 2013-06-17
A 2013-07-17
A 2013-09-22 2013-12-24
B 2011-04-06 2013-01-02
B 2012-02-12 2012-02-14
B 2012-11-10 2013-03-16
B 2013-04-16
B 2013-04-22

我需要为每个用户计算 2013 年未包含在这些范围内的工作日数。空白的“截止”日期表示范围正在进行中。

在上面的示例中,对于用户 A,它将是 2013-06-18 和 2013-07-16 之间的工作日数,对于 B,它将是 2013-03-17 和 2013-04-15 之间的工作日数。

我有一个工作日的查找表,但我使用最小值和最大值对日期范围所做的任何操作最终都会给我一个从 2013 年 1 月 1 日到 2013 年 12 月 31 日的“固定”日期范围。

我不聪明....

谢谢。

最佳答案

SELECT   users.User, COUNT(*)

FROM users
CROSS JOIN weekdays
LEFT JOIN userDates ON
userDates.User = users.User
AND userDates.From <= weekdays.date
AND (userDates.To IS NULL OR userDates.To >= weekdays.date)

WHERE weekdays.date >= '2013-01-01'
AND weekdays.date < '2014-01-01'
AND userDates.User IS NULL

GROUP BY users.User

关于mysql - 查找并发日期范围中的差距 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com