2016-09-01 5 views
1

У меня есть таблица в улье с двумя колонками: session_id и врут продолжительность так:добавить новый столбец для уникального идентификатора в улой таблице

|| session_id || duration|| 

    1    14   
    1    10  
    1    20   
    1    10   
    1    12   
    1    16   
    1    8  
    2    9   
    2    6   
    2    30   
    2    22 

я хочу, чтобы добавить новый столбец с уникальный идентификатор, когда:

session_id меняется или врем продолжительности> 15

я хочу выход быть похожим на это:

session_id  duration unique_id 
1    14   1 
1    10   1 
1    20   2 
1    10   2 
1    12   2 
1    16   3 
1    8   3 
2    9   4 
2    6   4 
2    30   5 
2    22   6 

какие-либо идеи, как сделать это в улья QL?

спасибо!

ответ

1

Таблицы SQL представляют неупорядоченные комплекты. Вам нужен столбец, определяющий порядок значений, потому что вы, похоже, заботитесь о заказе. Например, это может быть столбец идентификатора или созданный столбец.

Вы можете сделать это, используя накопленную сумму:

select t.*, 
     sum(case when duration > 15 or seqnum = 1 then 1 else 0 end) over 
      (order by ??) as unique_id 
from (select t.*, 
      row_number() over (partition by session_id order by ??) as seqnum 
     from t 
    ) t; 
+0

она прекрасно работает с колонкой ID, я запустить его на импала вместо этого. большое спасибо –

Смежные вопросы