Hive ROW_NUMBER,RANK(),DENSE_RANK()
2016-12-29 22:37
204 查看
Hive ROW_NUMBER,RANK(),DENSE_RANK()
原网址:http://www.cnblogs.com/dycg/p/4260283.html准备数据
浙江,杭州,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
相关文章推荐
- 自动识别OpenCV版本并添加依赖库
- Simulink 中S-function 包含C文件的用法
- 数据结构课程设计 成绩管理系统
- 如何在ubuntu里面关掉后台的meteor
- SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份
- Html练习一
- Android第四课;按钮的监听
- 1栈和队列--用栈来求解汉诺塔问题
- 把时间转化为毫秒,把毫秒转化为时分秒
- poj 2492 A Bug's Life
- java 接口的引入
- 敏捷开发
- PHP+JQUEY+AJAX实现分页
- 对称矩阵和稀疏矩阵的压缩和转置
- Python爬虫辅助库BeautifulSoup4用法精要
- 接口特点
- 理解静态链接与动态链接
- AJAX笔记一创建XMLHttpRequest对象,以及XMLHttpRequest对象的常用属性
- 查看mysql的端口
- 鸟人的Android揭秘(10)——Init进程源代码分析(一)