Hive中计算TopN的函数

2 次阅读 预计阅读时间: 1 分钟


n

假设我们有一个名为 sales 的表,其中包含列 salesperson 和 amount,我们想要为每位销售员按照销售额进行排名。

nnnn

ROW_NUMBER(): 这个例子为每位销售员分配一个唯一的序号,不考虑是否有相同的销售额。

nnnn
SELECTn  salesperson,n  amount,n  ROW_NUMBER() OVER (ORDER BY amount DESC) AS row_numnFROMn  sales;
nnnn

RANK(): 这个例子为销售员按照销售额排名,如果有相同的销售额,则它们会得到相同的排名。

nnnn
SELECTn  salesperson,n  amount,n  RANK() OVER (ORDER BY amount DESC) AS ranknFROMn  sales;n
nnnn

DENSE_RANK(): 这个例子也是为销售员按照销售额排名,但是它会连续分配排名,不会跳过后续的排名。

nnnn
SELECTn  salesperson,n  amount,n  DENSE_RANK() OVER (ORDER BY amount DESC) AS dense_ranknFROMn  sales;
nnnn

NTILE(): 这个例子将销售员分成四个桶(即四等分),假设有400名销售员,需要按销售额取Top100。

nnnn
SELECTn  salesperson,n  amount,n  quartilenFROM (n  SELECTn    salesperson,n    amount,n    NTILE(4) OVER (ORDER BY amount DESC) AS quartilen  FROMn    salesn) subquerynWHEREn  quartile = 1;n
n
最后更新于 2024-07-01