我有一个示例数据如下。
+---------+------------+--------+
| user id | sequence | Action |
|---------|------------|--------|
| 12345 | 1 | Run |
| 12345 | 2 | Sit |
| 12345 | 3 | Sit |
| 12345 | 4 | Run |
| 12345 | 5 | Run |
| 12345 | 6 | Sit |
+---------+------------+--------+
现在我希望结果应该是这样的:
+---------+---------+
| user id | Action |
|---------|---------|
| 12345 | Run |
| 12345 | Sit |
| 12345 | Run |
| 12345 | Sit |
+---------+---------+
序列#2和#3的行应合并,#4和#5的行应合并。我使用“按动作分组”将获得如下表所示的答案,但这不是我想要的:
+---------+---------+
| user id | Action |
|---------|---------|
| 12345 | Run |
| 12345 | Sit |
+---------+---------+
如何实现SQL(我使用Google Bigquery)?
太感谢了!
以下是BigQuery标准SQL
#standardSQL
SELECT * EXCEPT(dup) FROM (
SELECT *, action = LAG(action, 1, '') OVER(PARTITION BY user_id ORDER BY sequence) AS dup
FROM `project.dataset.table`
)
WHERE NOT dup
如果要应用于问题中的样本数据-输出为
Row user_id sequence action
1 12345 1 Run
2 12345 2 Sit
3 12345 4 Run
4 12345 6 Sit
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句