row_number() over partition by使用中出现的一个现象
目前仓库中有这么个需求,根据书本,科目,知识点分组,分组时按照知识点对应的章节排序,排序后只获取排名第一条的数据,因为只需要第一条,为了防止出现并列第一,这里使用hive支持的开窗函数:
row_number() over partition by
如下截图中跑出来的数据:
截图数据现象是这样,
partition by的字段值 subject_id,book_id, kp_id
和order by 的字段值unit_sort都一样,只不过是week不一样,
那么我的疑问是, 跑出来的数据是 hive默认将 week进行降序处理后,在其余字段值都一样, 按照week方式来给book_kp_unitsort_rank赋值的还是 这个book_kp_unitsort_rank赋值是随机的,
我在环境hue重跑过三四次,本以为是hue默认给排序展示给人看的,然后在hive命令行中在重跑依旧是上图结果。
写这个帖子没有结论,到现在还是不知道这个数据是 随机很巧的情况下 week=20就是排名第一还是hive的这个函数就会按照这个方式来走,
为了防止隐患(排名按照week随机给),我有更新了一把,在 order by后增加了 week desc方式;
如下:
select subject_id, book_id, unit_id, unit_sort, kp_id, week , start_date, row_number() over(partition by subject_id,book_id, kp_id order by unit_sort asc , week desc ) as book_kp_unitsort_rank from ods_common_book_unit_kp_schedule where day='2018-01-08' and subject_id in ('010', '030') and kp_id is not null and book_id = '010003001104100' and kp_id in ('1015800','1015720')
希望看到帖子的朋友们,可以给我留言发表下自己的看法,谢谢
相关推荐
SignalDu 2020-05-17
学峰的学习笔记 2020-10-05
guicaizhou 2020-08-01
服务器端攻城师 2020-07-28
rongwenbin 2020-06-15
骷髅狗 2020-06-14
那年夏天0 2020-06-04
Hhanwen 2020-05-29
sweetgirl0 2020-05-15
猫咪的一生 2020-05-01
lclcsmart 2020-04-30
东哥笔记 2020-04-21
Oeljeklaus 2020-04-20
Summer的小屋 2020-03-26
amwayy 2020-03-25
jiangkai00 2020-03-20
hongsheyoumo 2020-03-06
yanqianglifei 2020-02-22