我有以下表格以特定方式排序(在HiveSQL中):
ID Binary UnnecessaryVar
1 F a
1 F b
1 T c
2 F e
2 T f
我想在二进制变量中的第一个T之前选择所有行FOR EACH ID,包括变量为T的记录。应用于上表的解决方案的结果将是:
Prelude> data Complex = Complex Int Int
Prelude> :t Complex
Complex :: Int -> Int -> Complex
提前谢谢
答案 0 :(得分:0)
SQL表代表无序集。没有"订购"没有列来指定它。如果您有order by
子句,则可以轻松添加这样的顺序:
select . . . ,
row_number() over (order by <keys used in order by>) as seqnum
. . .
所以让我假设你有这样一个专栏。这是一个非常简单的方法:
select q.*
from (select q.*,
min(case when binary = 'T' then seqnum end) over
(partition by id) as seqnum_t
from <your query here> q
) q
where seqnum <= seqnum_t or seqnum_t is null;