gpt4 book ai didi

database - 获取日期范围内每天仅存在一次的唯一记录

转载 作者:行者123 更新时间:2023-11-29 14:13:27 25 4
gpt4 key购买 nike

我有一个案例,我想提取在特定时间段内每天仅存在一次的设备 ID (DID)。我尝试了不同的方法和分区,但我似乎每天只能单独获取该数据(其中日期 = X,但我需要一个查询,我可以在其中放置 X 和 Y 之间的日期)

例如,这是数据:

DID date     
A 2019-01-01
A 2019-01-01
A 2019-01-02
A 2019-01-03
B 2019-01-01
B 2019-01-02
B 2019-01-03
C 2019-01-01
C 2019-01-02
C 2019-01-02
C 2019-01-03
D 2019-01-01
D 2019-01-02
D 2019-01-03

查询应该只返回 B & D(因为 B & D 在 01 到 03 的每一天都存在一次)我也希望得到计数,在这种情况下为 2

谢谢!

最佳答案

您希望设备在该期间的每一天仅存在一次,因此如果您group by did,您需要返回didcount(date)count(distinct date) 等于该期间的天数:

select did
from tablename
where date between cast('2019-01-01' as date) and cast('2019-01-03' as date)
group by did
having
count(distinct date) = cast('2019-01-03' as date) - cast('2019-01-01' as date) + 1
and
count(date) = cast('2019-01-03' as date) - cast('2019-01-01' as date) + 1

参见 demo .
或者:

select t.did
from (
select did, date
from tablename
where date between cast('2019-01-01' as date) and cast('2019-01-03' as date)
group by did, date
having count(*) = 1
)t
group by t.did
having count(*) = cast('2019-01-03' as date) - cast('2019-01-01' as date) + 1

参见 demo .
结果:

| did |
| --- |
| B |
| D |

关于database - 获取日期范围内每天仅存在一次的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57746707/

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