Redshift SQL:使用日期和组考虑添加和重置计数器

问题描述 投票:0回答:2

假设下面有一张桌子。我想要一个计数器来计算客户(有很多)在细分A中的次数。如果客户在两个季度之间跳到另一个细分,则当客户跳回到细分时计数器将重置答:我确信有很多方法可以做到这一点,但是我只是想不通。请帮助。谢谢!

Quarter    Segment    Customer    **Counter**
Q1 2018    A          A1          1
Q2 2018    A          A1          2
Q3 2018    A          A1          3
Q4 2018    B          A1          1
Q1 2019    B          A1          2
Q2 2019    A          A1          1
Q3 2019    A          A1          2
sql amazon-redshift counter window-functions lag
2个回答
0
投票
您可以将row_number()窗口函数与partition by子句一起使用来获得结果。

SELECT Quarter, Segment, Customer, row_number() over ( PARTITION BY Quarter, Segment,Customer ORDER BY Quarter ) as Counter FROM <TABLE-NAME>

ft

0
投票
这是一种空白和岛屿问题。您可以使用不同的行号来解决此问题。真正的问题是处理宿舍。但是字符串函数可以处理。

select quarter, customer, segment, row_number() over (partition by customer, segment, seqnum - seqnum_cs order by right(quarter, 4), left(quarter, 2)) as counter from (select t.*, row_number() over (partition by customer order by right(quarter, 4), left(quarter, 2)) as seqnum, row_number() over (partition by customer, segment order by right(quarter, 4), left(quarter, 2)) as seqnum_cs from t ) t order by customer, seqnum;

© www.soinside.com 2019 - 2024. All rights reserved.