计算值在配置单元/SQL中连续出现的次数
我的表中有3列。我想计算一下,对于每个按时间排序的用户ID,计算值在配置单元/SQL中连续出现的次数,sql,hive,hiveql,Sql,Hive,Hiveql,我的表中有3列。我想计算一下,对于每个按时间排序的用户ID,值连续等于B的次数。类似于具有相同值的最长子列表。例如,下面的数据 时间用户ID值 2016-01-01 1 A 2016-01-02 1 B 2016-01-03 1 B 2016-01-04 2 C 2016-01-05 2 B 2016-01-06 2 B 2016-01-07 2 B 2016-01-08 2 C 2016-01-09 2 B 会回来吗 用户ID时间 1 2 2 3 如果没有配置单元中的用户定义函数,这可
值
连续等于B
的次数。类似于具有相同值的最长子列表。例如,下面的数据
时间用户ID值
2016-01-01 1 A
2016-01-02 1 B
2016-01-03 1 B
2016-01-04 2 C
2016-01-05 2 B
2016-01-06 2 B
2016-01-07 2 B
2016-01-08 2 C
2016-01-09 2 B
会回来吗
用户ID时间
1 2
2 3
如果没有配置单元中的用户定义函数,这可能吗?我在LAG
或LEAD
中挖掘了一些,但找不到方法:(
select value
,userid
,max (times) as times
from (select value
,userid
,count (*) as times
from (select value
,userid
,row_number () over
(
partition by userid
order by time
) as rn
,row_number () over
(
partition by userid,value
order by time
) as rn_val
from t
-- where value = 'B'
) t
group by value
,userid
,rn - rn_val
) t
group by value
,userid
order by value
,userid
;