基于第一个值和唯一组的hive sql子集

时间:2017-10-19 09:25:43

标签: sql hiveql

我有以下表格以特定方式排序(在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

提前谢谢

1 个答案:

答案 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;