一、求每一年最大气温的那一天 + 温度
1、说明
数据格式
2010012325
2014010114
2014010216
2014010317
2014010410
2014010506
2012010609
2012010732
2012010812
2012010919
2012011023
2001010116
2001010212
2001010310
2001010411
2001010529
2013010619
2013010722
2013010812
2013010929
2013011023
2008010105
2008010216
2008010337
2008010414
2008010516
2007010619
2007010712
2007010812
2007010999
2007011023
2010010114
2010010216
2010010317
2010010410
2010010506
2015010649
2015010722
2015010812
2015010999
2015011023
数据解释
2010012325 表示在 2010 年 01 月 23 日的气温为 25 度。
建表、数据导入及拆分
create table tq(line STRING)
load data local inpath '/root/kb08/hive/homework/tq.txt' into table tq
create table ptq(datetime string,temp int) partitioned by(year int)
set hive.exec.dynamic.partition.mode=nonstrict
insert into ptq
partition(year)
select datetime,temp,year from vtq
select * from ptq
表清洗后结果(一部分)
查询语句
select * from ptq
select t.datetime,t.temp from
(
select datetime,temp,dense_rank() over(partition by year order by temp desc) dnk from ptq
)t
输出结果(一部分)
求每一年最大气温的那一天 + 温度
二、求学生选课情况
1、数据说明
(1)数据格式
id course
1,a
1,b
1,c
1,e
2,a
2,c
2,d
2,f
3,a
3,b
3,c
3,e
(2)字段含义
表示有 id 为 1,2,3 的学生选修了课程 a,b,c,d,e,f 中其中几门。
2、需求
编写 Hive 的 HQL 语句来实现以下结果:表中的 1 表示选修,表中的 0 表示
未选修输出结果格式如下
id a b c d e f
1 1 1 1 0 1 0
2 1 0 1 1 0 1
3 1 1 1 0 1 0
建表,数据导入
create table mycourse(stuid int,course string) row format delimited fields terminated by ','
load data local inpath '/root/kb08/hive/homework/course.txt' into table mycourse
select * from mycourse
查询语句
select stuid,concat_ws(',',collect_set(course)) courses from mycourse group by stuid
select stuid,
case when instr(courses,'a')>0 then 1 else 0 end a,
case when instr(courses,'b')>0 then 1 else 0 end b,
case when instr(courses,'c')>0 then 1 else 0 end c,
case when instr(courses,'d')>0 then 1 else 0 end d,
case when instr(courses,'e')>0 then 1 else 0 end e,
case when instr(courses,'f')>0 then 1 else 0 end f,
case when instr(courses,'g')>0 then 1 else 0 end g
from
(select stuid,concat_ws(',',collect_set(course)) courses from mycourse group by stuid)t
输出结果