Hive函数Demo3:排序函数

/*
数据集

孙悟空	语文	87
孙悟空	数学	95
孙悟空	英语	68
大海	语文	94
大海	数学	56
大海	英语	84
宋宋	语文	64
宋宋	数学	86
宋宋	英语	84
婷婷	语文	65
婷婷	数学	85
婷婷	英语	78
*/

-- 创建表
create table score(
name string,
subject string,
score int)
row format delimited fields terminated by "\t";

--导入数据
load data local inpath '/opt/module/datas/score.txt' into table score;



/*
RANK()          允许并列排名 重复后会跳号
ROW_NUMBER()    行号
DENSE_RANK()    允许并列,不跳号
CUME_DIST()     数对 从排序后的第一行到当前行之间数据 占整个数据的百分比
PERCENT_RANK()  RAMK()值-1 除 整个数据集数据量-1
*/

select *,
       rank() over (order by score)         ranknum,
       row_number() over (order by score)   rownum,
       dense_rank() over (order by score)   dnnum,
       cume_dist() over (order by score)    cdnum,
       percent_rank() over (order by score) prnum
from score;

/*
执行结果
name,subject,score,ranknum,rownum,dnnum,cdnum,prnum
大海,数学,56,1,1,1,0.08333333333333333,0
宋宋,语文,64,2,2,2,0.16666666666666666,0.09090909090909091
婷婷,语文,65,3,3,3,0.25,0.18181818181818182
孙悟空,英语,68,4,4,4,0.3333333333333333,0.2727272727272727
婷婷,英语,78,5,5,5,0.4166666666666667,0.36363636363636365
大海,英语,84,6,6,6,0.5833333333333334,0.45454545454545453
宋宋,英语,84,6,7,6,0.5833333333333334,0.45454545454545453
婷婷,数学,85,8,8,7,0.6666666666666666,0.6363636363636364
宋宋,数学,86,9,9,8,0.75,0.7272727272727273
孙悟空,语文,87,10,10,9,0.8333333333333334,0.8181818181818182
大海,语文,94,11,11,10,0.9166666666666666,0.9090909090909091
孙悟空,数学,95,12,12,11,1,1
*/



/*
NTILE(x):将数据集均分到x个组中,返回被分配的组号
下面案例 一共12条数据 被平分到了5组中 余数为2 多出2条被分配到 第一组和第二组中
*/
select *,ntile(5) over() from score;


/*
执行结果
name,subject,score,ntile_window_0
孙悟空,语文,87,1
孙悟空,数学,95,1
孙悟空,英语,68,1
大海,语文,94,2
大海,数学,56,2
大海,英语,84,2
宋宋,语文,64,3
宋宋,数学,86,3
宋宋,英语,84,4
婷婷,语文,65,4
婷婷,数学,85,5
婷婷,英语,78,5
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值