当前位置:   article > 正文

impala取重复数据时间最新的一条(分组聚合)_impala数据库多条相同数据,只取一条

impala数据库多条相同数据,只取一条

场景:假如你在网上买了一台空调,生成一个订单号xxxxxxx,该订单号有两个物料(空调内机和空调外机),在快递员送货时,我们只看该订单最终完成时间,也就是说,假如先送的空调内机,时间为2022-08-23 15:54:30,空调外机送达时间为2022-08-24 10:30:07,我们要的时间就是2022-08-24 10:30:07

解决方案:同一个订单按照时间降序排序,我们取第一条

知识点:row_number() over (partition by)

问题:订单并非像我举例中的有两条,有的订单可能有十几条

代码:

  1. select * from (
  2. select
  3. order_no,
  4. sh_time1,
  5. sh_time2,
  6. ROW_NUMBER() OVER (PARTITION BY order_no ORDER BY sh_time1,sh_time2 DESC NULLS LAST) rn
  7. from TABLE1 ) tb_oms
  8. where rn = 1

如果想取最早的一条记录,升序排列,取第一条即可

  1. select * from (
  2. select
  3. order_no,
  4. sh_time1,
  5. sh_time2,
  6. ROW_NUMBER() OVER (PARTITION BY order_no ORDER BY sh_time1,sh_time2 NULLS LAST) rn
  7. from TABLE1 ) tb_oms
  8. where rn = 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/952783
推荐阅读
相关标签
  

闽ICP备14008679号