我有時間的訪問,時間戳記這樣如何查找連續日期的最長序列?
ID, time
1, 1493596800
1, 1493596900
1, 1493432800
2, 1493596800
2, 1493596850
2, 1493432800
我用火花SQL數據庫,我需要有像
ID, longest_seq (days)
1, 2
2, 5
3, 1
每個ID consecutives的最長序列中的日期我試着去適應這個回答Detect consecutive dates ranges using SQL對我來說,但我沒有達到我的期望。
SELECT ID, MIN (d), MAX(d)
FROM (
SELECT ID, cast(from_utc_timestamp(cast(time as timestamp), 'CEST') as date) AS d,
ROW_NUMBER() OVER(
PARTITION BY ID ORDER BY cast(from_utc_timestamp(cast(time as timestamp), 'CEST')
as date)) rn
FROM purchase
where ID is not null
GROUP BY ID, cast(from_utc_timestamp(cast(time as timestamp), 'CEST') as date)
)
GROUP BY ID, rn
ORDER BY ID
如果有人對如何解決這一要求,或有什麼錯在它的一些線索,我將不勝感激幫助 感謝
[編輯]一個更明確的輸入/輸出
ID, time
1, 1
1, 2
1, 3
2, 1
2, 3
2, 4
2, 5
2, 10
2, 11
3, 1
3, 4
3, 9
3, 11
其結果將是:
ID, MaxSeq (in days)
1,3
2,3
3,1
所有的訪問是在時間戳,但我需要連續幾天,然後每天每次訪問一天一次地計算在內
你能給出更具代表性的意見嗎?我認爲輸入數據集不匹配結果。 –