首页 > 试题广场 >

在hive中下列哪些命令可以实现去重()

[不定项选择题]
在hive中下列哪些命令可以实现去重()
  • distinct
  • group by
  • row_number
  • having
select* 

 from(

        select *,row_number() over (partitionby tran_idorder by timestamp asc) num from table

  ) t 

wheret.num=1; 

分析:

row_number()over (partition by tran_idorder by timestamp desc) num   取num=1 的           
意思是先根据tran_id进行分组,并在分组内部按timestamp 降序排序,row_number()函数计算的值就表示某个tran_id组内部排序后的顺序编号(该编号在一个组内是连续并且唯一的) 。
所以最后直接去每个分组内的第一个(num=1)即可。
————————————————
版权声明:本文为CSDN博主「默一鸣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yimingsilence/article/details/70140877
编辑于 2021-03-18 18:52:20 回复(1)
我查到的...row_number() over(partition by)
发表于 2020-10-23 11:19:16 回复(0)
row_number是排完序后再取topN,相同于去重
发表于 2020-03-29 12:57:46 回复(1)
distinct 去重
row_number可以排完序后,嵌套子查询进行去重
group by 本质是进行分组聚合,也可以实现去重,但是不是长项
发表于 2022-09-18 09:58:11 回复(0)
全都是
发表于 2022-03-30 18:56:15 回复(0)
1
发表于 2022-08-12 14:34:33 回复(0)
row_number是行号,如果不partition by不是就没有去重效果了吗?这题目奇葩
发表于 2021-10-21 16:58:02 回复(0)
group by怎么去重呀,分组?
发表于 2021-09-16 17:19:35 回复(0)
distinct row_number grow by
发表于 2021-08-31 17:06:30 回复(0)
row_number是排完序后再取topN,相同于去重
发表于 2021-05-30 19:06:22 回复(0)