【问题标题】:hive rank over grouped value蜂巢排名高于分组值
【发布时间】:2018-03-18 23:51:15
【问题描述】:

大师们,我在 hive rank 过程中偶然发现,我想对每天的交易进行排名(对于相同的 trx 值没有重复的排名值)

date      hour trx  rnk
18/03/2018  0   1   24
18/03/2018  1   2   23
18/03/2018  2   3   22
18/03/2018  3   4   21
18/03/2018  4   5   20
18/03/2018  5   6   19
18/03/2018  6   7   18
18/03/2018  7   8   17
18/03/2018  8   9   16
18/03/2018  9   10  15
18/03/2018  10  11  14
18/03/2018  11  12  13
18/03/2018  12  13  12
18/03/2018  13  14  11
18/03/2018  14  15  10
18/03/2018  15  16  9
18/03/2018  16  17  8
18/03/2018  17  18  7
18/03/2018  18  19  6
18/03/2018  19  20  5
18/03/2018  20  21  4
18/03/2018  21  22  3
18/03/2018  22  23  2
18/03/2018  23  24  1
17/03/2018  0   1   24
17/03/2018  1   2   23
17/03/2018  2   3   22
17/03/2018  3   4   21
17/03/2018  4   5   20
17/03/2018  5   6   19
17/03/2018  6   7   18
17/03/2018  7   8   17
17/03/2018  8   9   16
17/03/2018  9   10  15
17/03/2018  10  11  14
17/03/2018  11  12  13
17/03/2018  12  13  12
17/03/2018  13  14  11
17/03/2018  14  15  10
17/03/2018  15  16  9
17/03/2018  16  17  8
17/03/2018  17  18  7
17/03/2018  18  19  6
17/03/2018  19  20  5
17/03/2018  20  21  4
17/03/2018  21  22  3
17/03/2018  22  23  2
17/03/2018  23  24  1

这是我的代码

select a.date, a.hour, trx, rank() over (order by a.trx) as rnk from(
select date,hour, count(*) as trx from  smy_tb
group by date, hour
)a
limit 100;

问题是: 1. rank 值与相同的 trx 值重复 2. rank值延续到下一个日期(应该按日期和小时分组,所以每个日期只会返回24个rank值)

需要建议, 谢谢你

【问题讨论】:

  • 如果您在一天内获得相同的 trx 值,您想要的排序是什么?您可以将 row_number 与 trx 上的订单一起使用,或者将 rank() 与 trx 和小时上的订单一起使用。在这两种情况下都按日期划分。
  • 嗨@BKS,你是对的,row_number() 解决这个问题

标签: hive hiveql


【解决方案1】:

您应该partition by 日期列并使用特定的顺序。

rank() over (partition by a.date order by a.hour desc)

【讨论】:

    【解决方案2】:

    正如@BKS 所解释的

    这是解析的代码

    select a.date, a.hour, trx, row_number() over (partition by a.date order by a.trx desc) as rnk from(
    select date,hour, count(*) as trx from  smy_tb
    group by date, hour
    )a
    limit 100;
    

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 2016-12-20
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多