【发布时间】:2021-05-09 14:57:14
【问题描述】:
我有一个与question#66044663 有点相似但更复杂的问题。
这是我的虚拟数据。
我想从每个用户的标志中获取 3 个相邻的操作(不重复)。
这是描述我想法的图表。
这就是我想要的:
如何实现 SQL(我使用 Google Bigquery)? 我知道函数 LAG 可能是一个解决方案,但我不知道如何避免重复操作。
希望有人能照亮我。谢谢一百万!
这是生成数据集的代码。
WITH
src_table AS (
SELECT 'Jack' AS User, 1 AS Sequence, 'Eat' AS Action, '' AS Flag UNION ALL
SELECT 'Jack' AS User, 2 AS Sequence, 'Work' AS Action, '' AS Flag UNION ALL
SELECT 'Jack' AS User, 3 AS Sequence, 'Sleep' AS Action, 'Flag A' AS Flag UNION ALL
SELECT 'Jack' AS User, 4 AS Sequence, 'Exercise' AS Action, 'Flag B' AS Flag UNION ALL
SELECT 'Kenny' AS User, 1 AS Sequence, 'Run' AS Action, '' AS Flag UNION ALL
SELECT 'Kenny' AS User, 2 AS Sequence, 'Eat' AS Action, '' AS Flag UNION ALL
SELECT 'Kenny' AS User, 3 AS Sequence, 'Eat' AS Action, '' AS Flag UNION ALL
SELECT 'Kenny' AS User, 4 AS Sequence, 'Work' AS Action, 'Flag C' AS Flag UNION ALL
SELECT 'Kenny' AS User, 5 AS Sequence, 'Work' AS Action, 'Flag D' AS Flag UNION ALL
SELECT 'May' AS User, 1 AS Sequence, 'Work' AS Action, 'Flag A' AS Flag
)
【问题讨论】:
标签: sql group-by google-bigquery sequence partition-by