SQL获取一些组并保持顺序

卢卡斯·李

我有一个示例数据如下。

+---------+------------+--------+
| 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)?

太感谢了!

米哈伊尔·伯利安(Mikhail Berlyant)

以下是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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询以获取一些规则的值

来自分类Dev

以垂直顺序显示一些文本

来自分类Dev

如何从WebView获取一些信息

来自分类Dev

使用JSoup获取一些属性

来自分类Dev

部分,从 textField 获取一些数据

来自分类Dev

16.04 无法获取一些档案

来自分类Dev

MySQL 获取:需要一些建议

来自分类Dev

如何使此查询以相反的顺序从另一个表中获取一些数据

来自分类Dev

SQL,需要从多行中获取一些数据并放入一行

来自分类Dev

一些特定用例的C ++原子存储顺序

来自分类Dev

一些关于Rust内存顺序的困惑

来自分类Dev

顺序中的一些字符串

来自分类Dev

SQL联接一些表

来自分类Dev

从SQL中删除一些东西

来自分类Dev

从SQL检索一些文本

来自分类Dev

SQL SUM一些计数

来自分类Dev

SQL联接一些表

来自分类Dev

SQL修剪一些领先的0

来自分类Dev

sql查询给出一些错误

来自分类Dev

SQL Server 合并一些列

来自分类Dev

如何在SQL Server的列中获取一些值

来自分类Dev

如何获取有关SQL Server CE中列的一些特定信息

来自分类Dev

训练一些嵌入,保持其他固定

来自分类Dev

训练一些嵌入,使其他保持固定

来自分类Dev

新系统安装保持一些分区不变

来自分类Dev

argparse:必需组中的一些互斥参数

来自分类Dev

正则表达式:组一些

来自分类Dev

从catch(...)捕获的异常中获取一些信息?

来自分类Dev

存储过程获取一些行和总计