在“索引表”上循环以找出配置单元中每一行的值

zzzyeukh  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(307)

我有两张table。
表aaa

userid exp
1      100
2      235325
3      3242
4      32543

表bbb

level  levelup_exp
1      10
2      100
3      1000
4      10000
5      100000
6      1000000

如果我想计算出用户的级别,我应该循环表bbb(按级别描述排序),比较aaa.exp和bbb.levelup\u exp,如果exp大于levelup\u exp但小于等于next levelup\u exp,就可以找到用户的级别。所以输出应该是这样的:

userid level
1      2
2      6
3      3
4      4

如何使用hiveql实现这一点?提前谢谢。

nbysray5

nbysray51#

下面是一个解决方案,您可以尝试使用userid,下一级作为输出,但是您的输出是不一致的

select userid , level, tab1.exp , levelup_exp  ,next ,next_level
 from tab1 as tab1 , (
select level,  levelup_exp
,lead(levelup_exp, 1) over (order by level) as next
,lead(level, 1) over (order by level) as next_level
 from tab2) as tab2x
where tab1.exp > levelup_exp  
 and tab1.exp <= next 
 order by userid

相关问题