Sql 在Impala中,如何填充一列以将一组行与组中的其他行区分开来?
我有黑斑羚的下表Sql 在Impala中,如何填充一列以将一组行与组中的其他行区分开来?,sql,impala,hue,Sql,Impala,Hue,我有黑斑羚的下表 |LogTime|ClientId|IsNewSession| |1 |123 |1 | |2 |123 | | |3 |123 | | |3 |666 |1 | |4 |666 | | |10 |123 |1 | |23 |666
|LogTime|ClientId|IsNewSession|
|1 |123 |1 |
|2 |123 | |
|3 |123 | |
|3 |666 |1 |
|4 |666 | |
|10 |123 |1 |
|23 |666 |1 |
|24 |666 | |
|25 |444 |1 |
|26 |444 | |
我想制作一个新表,如下所示:
|LogTime|ClientId|IsNewSession|SessionId|
|1 |123 |1 |1 |
|2 |123 | |1 |
|3 |123 | |1 |
|3 |666 |1 |1 |
|4 |666 | |1 |
|10 |123 |1 |2 |
|23 |666 |1 |2 |
|24 |666 | |2 |
|25 |444 |1 |1 |
|26 |444 | |1 |
基本上,我想让SessionId
列在每组行中都有一个唯一的会话ID,直到IsNewSession
列在group byClientId
之后有一个值1
,以区分每个ClientId
的不同会话
我已经创建了IsNewSession
列来执行此操作,但不确定如何迭代行以创建SessionId
列
任何帮助都将不胜感激 您可以使用累计总和:
select t.*,
sum(isnewsession) over (partition by clientid order by logtime) as sessionid
from t;
哇,我不知道这件事!谢谢你明确的回答!:)