Hive ROW_NUMBER,RANK(),DENSE_RANK()
2016-08-08 20:03
447 查看
Hive ROW_NUMBER,RANK(),DENSE_RANK()
准备数据浙江,杭州,300
浙江,宁波,150
浙江,温州,200
浙江,嘉兴,100
江苏,南京,270
江苏,苏州,299
江苏,某市,200
江苏,某某市,100
创建表
CREATE table pcp
(province string,city string,people int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
导入数据
load data inpath '/tmp/1.txt' into table pcp;
普通查询
select * from pcp order by people desc;
浙江 杭州 300
浙江 宁波 150
浙江 温州 200
浙江 嘉兴 100
江苏 南京 270
江苏 苏州 299
江苏 某市 200
江苏 某某市 100
综合查询
select province,city,
rank() over (order by people desc) rank,
dense_rank() over (order by people desc) dense_rank,
row_number() over(order by people desc) row_number
from pcp
group by province,city,people;
浙江 杭州 300 1 1 1
江苏 苏州 299 2 2 2
江苏 南京 270 3 3 3
江苏 某市 200 4 4 4
浙江 温州 200 4 4 5
浙江 宁波 150 6 5 6
江苏 某某市 100 7 6 7
浙江 嘉兴 100 7 6 8
主要注意打圈的:
row_number顺序下来,
rank:在遇到数据相同项时,会留下空位,(红框内第一列,4,4,6)
dense_rank:在遇到数据相同项时,不会留下空位,(红框内第一列,4,4,5)
分组统计查询
select province,city,
rank() over (partition by province order by people desc) rank,
dense_rank() over (partition by province order by people desc) dense_rank,
row_number() over(partition by province order by people desc) row_number
from pcp
group by province,city,people;
江苏 苏州 299 1 1 1
江苏 南京 270 2 2 2
江苏 某市 200 3 3 3
江苏 某某市 100 4 4 4
浙江 杭州 300 1 1 1
浙江 温州 200 2 2 2
浙江 宁波 150 3 3 3
浙江 嘉兴 100 4 4 4
相关文章推荐
- Amazon-EC2 Linux实例中tomcat正常运行,但是外部浏览器如Google都无法访问
- 010:“implements Runnable” vs. “extends Thread”?
- 杭电-2084 数塔
- 图论(网络流):UVa 1659 - Help Little Laura
- HDU4460-Friend Chains-BFS+bitset优化
- 关于Javascript中通过实例对象修改原型对象属性值的问题
- SQL Server 高频高并发访问中的键查找死锁解析
- 好用的网站
- 开放式面试题
- hdu5023 线段树成段更新
- openpyxl - 开始
- JS 对象直接量方法创建对象
- 安装部署(四) Ubuntu 配置 Java MongoDB驱动
- 数位DP HDU2089
- [转]Android优质技术资源合集
- MQ消息中间件技术
- java项目之——坦克大战01
- 关于因子分析的建模
- HDU5745-La Vie en rose-字符串dp+bitset优化
- HDU 1010--Tempter of the Bone