【发布时间】:2018-02-19 12:22:18
【问题描述】:
我的数据集的字段包含重复的数字序列(为简洁起见,1 - 5),以及一些数字乱序的行:
1
2
3
5 -- out of sequence, need to discard
4
5
1 -- sequence starts over
2
3
4
...
如何丢弃乱序的行? 谢谢!
更新:还有其他列来指定排序。
UPDATE2:用于测试的数据集:
WITH t AS (
SELECT * FROM
UNNEST([
STRUCT(1 AS id, 1 AS n),
(2, 2),
(3, 3),
(4, 5),
(5, 4),
(6, 5),
(7, 1),
(8, 2),
(9, 3),
(10, 4)
])
)
UPDATE3:可能有许多数字乱序(从相同的 1 - 5 范围内)。序列总是从 1 开始,所有数字都存在,除了最后一轮,它可能是不完整的(更早结束,参见测试集)。乱序的数字就像是需要去除的“噪音”。
【问题讨论】:
-
SQL 表代表 无序 集。哪一列用于确定排序?
-
提供的示例非常简化,不存在通用案例(至少对我而言)。你能澄清排除的逻辑(只是一个乱序行,或者它可以是很多等等)和生存行的逻辑(它们应该代表整个集合 1-5 还是可以是部分的?等等 - 例如如果序列是 1,2,3,5,3,4,1,2,3,4 - 如果没有这些类型的详细信息,幸存的数字将是 1,2,3,3,4,1,2,3,4?在这里回答只是向空中射击:o)
-
@MikhailBerlyant 感谢您的评论,请参阅 update3,您的序列的答案是 1,2,3,4(所有其他都被丢弃,因为它应该在开始新一轮之前完成整轮,除了最后一轮)
标签: sql google-bigquery