我已经完成了第一部分:我有一个名为Clients的表,其中有一个名为Last_Seen的列。我需要返回6个月并向前一周(搜索180到173天),并获取在这7天窗口期间看到的记录。
我需要帮助第二部分:
我不希望同一个客户端出现在这个7天的窗口搜索,如果他们是'Last_Seen'或有一个预定的约会列称为'预定'后,7天的窗口。任何想法如何实现这一点?谢谢!!
我用这个查询完成了第1部分:
SELECT DISTINCT *
FROM Clients
WHERE Last_Seen BETWEEN CURDATE() - INTERVAL 180 DAY
AND CURDATE() - INTERVAL 173 DAY
AND Last_Seen IS NOT NULL
字符串
回答我自己的问题与以下:
SELECT DISTINCT *
FROM Clients
WHERE Last_Seen BETWEEN CURDATE() - INTERVAL 180 DAY
AND CURDATE() - INTERVAL 173 DAY
AND Last_Seen IS NOT NULL
AND Last_Seen NOT BETWEEN CURDATE() - INTERVAL 173 DAY
AND CURDATE() - INTERVAL 1 DAY
AND Scheduled NOT BETWEEN CURDATE() - INTERVAL 173 DAY
AND CURDATE() - INTERVAL 1 DAY
AND Last_Seen NOT BETWEEN CURDATE() - INTERVAL 172 DAY
AND CURDATE() - INTERVAL 1 DAY
AND Scheduled NOT BETWEEN NOW()
AND (NOW() + INTERVAL 365 DAY)
型
1条答案
按热度按时间tp5buhyn1#
简短的回答
假设
Clients
表看起来像这样,当前日期为2023-10-26
:| ID|名称|最后一次看到|定于|
| --|--|--|--|
| 1 |客户端1| 2023-09-01 11:00| NULL|
| 2 |客户端2| 2023-04-27 10:00| NULL|
| 3 |客户机3| 2023-05-02 09:00:00| 2023-10-27 14:00|
我们对
Client 1
不感兴趣,因为Last_Seen
不符合 “Part 1” 标准。Client 2
和Client 3
都符合 “Part 1” 标准,但只有Client 2
符合 “Part 2” 标准。实现此结果的查询很简单:
字符串
这看起来仍然有点奇怪,如果一个客户在六个月前是
Last_Seen
,但在几周/几个月后有一个Scheduled
预约,那么Last_Seen
日期肯定应该是Scheduled
预约的日期,除非他们错过了预定的预约,在这种情况下,我们想安排另一个?说明
你试图回答自己的问题似乎有点“不可靠”。
让我们从 “第1部分” 的解决方案中的问题开始:
型
首先,
AND Last_Seen IS NOT NULL
是冗余的,因为它不可能在为空时满足第一个标准(日期范围)。第二,正如培训及房屋局局长在评论中指出:
180天不是6个月,180到173也不是7天的窗口期
您的日期范围条件计算为(如果
Last_Seen
是日期):型
如果你的
Last_Seen
列包含日期(不是日期时间),它是8天(2023-04-29 - 2023-05-06
包括在内)。如果你的Last_Seen
列包含日期时间值,它并不那么糟糕,因为它的计算结果是:型
这是7天零1秒,这可能不重要,但严格来说应该重写为:
型
其计算结果为(如果
Last_Seen
是datetime):型
现在来看看您的解决方案 “第2部分” 中的问题,从
Last_Seen
标准开始:型
下面是一组相同的条件,其中表达式被评估(假设
Last_Seen
是datetime):型
第3行是冗余的,如上所述。第4行和第5行是冗余的,因为不可能满足第1行和第2行,但不可能满足第4行和第5行(除了无意的1秒重叠之外)。第6行和第7行是冗余的,原因与第4行和第5行相同。
最后,关于
Scheduled
标准:型
评估为:
型
这些标准没有太大意义。在
2023-10-25 00:00:00
和2023-10-26 09:24:30
之间有一个奇怪的洞。本质上,似乎你试图说Scheduled
不在2023-05-06 00:00:00
或之后。因为我们需要处理空值,这通常表示为:型
假设有人参加了一个约会,导致
Last_Seen
被更新到Scheduled
约会的日期时间,这可以重写为:型
或者可能:
型
这里有一个db<>fiddle。