1. 程式人生 > >Hive求每一年最大氣溫的那一天 + 溫度

Hive求每一年最大氣溫的那一天 + 溫度

2014010216
2014010410
2012010609
2012010812
2012011023
2001010212
2001010411
2013010619
2013010812
2013011023
2008010216
2008010414
2007010619
2007010812
2007011023
2010010216
2010010410
2015010649
2015010812
2015011023

create table t_wendu_line(
line string
);
load data local inpath '/root/wendu.txt' into table t_wendu_line;
求每一年最大氣溫的那一天 + 溫度
臨時資料存放在檢視中
create view v_temperature_data
as
select substr(line,1,4) as year,
from_unixtime(unix_timestamp(substr(line,1,8),'yyyymmdd'),'yyyy-mm-dd') tdate
,cast(substr(line,9,2) as smallint) as temperature_num
from t_wendu_line;

select year,tdate,temperature_num
from (
select year,tdate,temperature_num,
row_number() over(partition by year order by temperature_num desc ) as rn
,rank() over(partition by year order by temperature_num desc ) as rn1
,dense_rank() over(partition by year order by temperature_num desc ) as rn2
from v_temperature_data
) tmp
where tmp.rn = 1;

2001 2001-01-02 12
2007 2007-01-10 23
2008 2008-01-02 16
2010 2010-01-02 16
2012 2012-01-10 23
2013 2013-01-10 23
2014 2014-01-02 16
2015 2015-01-06 49