考虑具有以下架构的表:
device_id VARCHAR
date DATE
visited BOOLEAN
让我们说表中的数据涵盖了30天的时间段,每device_id
将有30行,每月的每一天都有一个(因此,如果我们有10台设备,将有10x30 = 300行)。
我需要编写一个查询,其中结果集将包含一个名为age
的附加整数字段,其中age
的计算方式如下:如果visited
为TRUE
,然后应将age
设置为0
。对于给定的device_id
的其他行,age
应该每天连续增加1
。因此结果应如下所示:
device_id date visited age
aaaa 2018/05/01 True 0
aaaa 2018/05/02 False 1
aaaa 2018/05/03 False 2
aaaa 2018/05/04 False 3
aaaa 2018/05/05 False 4
aaaa 2018/05/06 True 0
aaaa 2018/05/07 False 1
aaaa 2018/05/08 False 2
aaaa 2018/05/09 False 3
aaaa 2018/05/10 False 4
...
aaaa 2018/05/31 False 15
bbbb 2018/05/01 True 0
...
我一直在尝试使用窗口函数对记录进行排名,但是实际上没有一致的分区可以对它们进行排名。我觉得我缺少明显的东西。感谢您的协助。
答案 0 :(得分:1)
您可以使用窗口mort_tab
在device_id和mort_rate
/ mort_tab(1.,9.)
中准备组:
SUM
{{3}}