gpt4 book ai didi

SQL根据其他行删除重复行

转载 作者:行者123 更新时间:2023-12-02 00:11:35 27 4
gpt4 key购买 nike

我有两个表(一个显示发送给客户的所有程序的记录,另一个显示用户采取行动的所有程序的记录)。我的最终目标是统计发送给用户的程序中有多少被执行了。我现在有办法做到这一点,但有一个问题。这些程序可能会在一天内多次发送给用户(我将以 20 次为例)。如果用户在 24 小时内对该程序采取操作,我不希望它计为 19 个未操作的程序和 1 个操作的程序。我希望它算作 1 对程序执行 0 失败。

包含发送给客户的节目的表需要进行过滤,以便发送给客户的每个节目每 24 小时只显示一次。

我的解决方案是有一个“窗口”类型的东西,这样一旦程序被发送给客户,它就会为该客户“锁定”24 小时,这样它就不会出现在我的“发送给客户的程序”中多次查询。

我有一个这样的表:

Customer    Time    Program
-----------------------------------
1 8:05 a
1 10:30 a
1 11:30 a
1 12:30 b
1 1:25 a
2 9:38 b
2 10:38 c
2 1:36 c
2 2:40 c
2 3:41 b
.
.
.

我想得到一个表(查询,而不是删除),在特定时间范围内删除每个客户的重复程序(令人困惑!我知道)

这是我想要的(例如 3 小时的时间范围):

Customer    Time    Program
-----------------------------------
1 8:05 a
1 11:30 a
1 12:30 b
2 9:38 b
2 10:38 c
2 2:40 c
2 3:41 b
.
.
.

最佳答案

试试这个:

select *
from t
where not exists (select 1 from t t2
where t2.customer = t.customer and
t2.program = t.program and
t2.time - t.time < 3.0/24 and
t2.time > t.time
)

日期时间算法取决于数据库,但这适用于许多数据库。

关于SQL根据其他行删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006039/

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