真題題目:
真題一:
movie category
《阿凡達2》 懸疑,動作,科幻,劇情
《滿江紅》 懸疑,警匪,動作,心理,劇情
《流浪地球》 科幻,動作,災難
得到如下數據:
《阿凡達2》 懸疑
《阿凡達2》 動作
《阿凡達2》 科幻
《阿凡達2》 劇情
《滿江紅》 懸疑
《滿江紅》 警匪
《滿江紅》 動作
《滿江紅》 心理
《滿江紅》 劇情
《流浪地球》 科幻
《流浪地球》 動作
《流浪地球》 災難表名叫做movies
建表語句:
create table movies(
movie string,
category array<string>
)
row format delimited
fields terminated by '\t'
collection items terminated by ',';真題二:
如下數據:
小獅 水瓶座 A
小猿 射手座 A
小云 水瓶座 B
小鋒 水瓶座 A
小琪 射手座 A
變為:
指標:將相同星座和血型的人合併在一起
射手座,A 小猿|小琪
水瓶座,A 小獅|小鋒
水瓶座,B 小云
建表語句:
create table person_info(
name string,
constellation string,
blood_type string)
row format delimited fields terminated by "\t";真題三:
data數據如下:
{"username":"張三","score":95}
{"username":"李四","score":76}
{"username":"小趙","score":92}
{"username":"王五","score":76}
{"username":"趙六","score":62}
{"username":"趙六1","score":62}
{"username":"趙六2","score":26}
{"username":"趙六3","score":89}
{"username":"趙六4","score":77}create table scores(
json_str string
);load data local inpath '/home/hivedata/zuoye02.txt' into table scores;
創建一張表,將上述數據導入表中,然後查詢如下結果:
成績大於90為優、大於80為良、大於60為中,不及格為差
統計結果:
等級 人數
優 x1
良 x2
中 x3
差 x4真題四:
找出連續活躍3天及以上的用户
-- 這個是一個用户日活表,每一條表示一個用户,在某一條是活躍的
create table t_useractive(
uid string,
dt string
);insert into t_useractive
values('A','2023-10-01'),('A','2023-10-02'),('A','2023-10-03'),('A','2023-10-04'),
('B','2023-10-01'),('B','2023-10-03'),('B','2023-10-04'),('B','2023-10-05'),
('C','2023-10-01'),('C','2023-10-03'),('C','2023-10-05'),('C','2023-10-06'),
('D','2023-10-02'),('D','2023-10-03'),('D','2023-10-05'),('D','2023-10-06');真題答案:
第一題:
加載數據:
load data local inpath '你存放文本的目錄' into table movies;
示例:
load data local inpath '/home/hivedata/movies.txt' into table movies;
解答:
select movie,type from movies lateral view explode(category) mytable as type;第二題:
加載數據:
load data local inpath '你存放文本的目錄' into table person_info;
示例:
load data local inpath '/home/hivedata/zuoye01.txt' into table person_info;解答:
select concat(constellation,',',blood_type) cb,
concat_ws('|',collect_list(name))
from person_info
group by concat(constellation,',',blood_type);第三題:
with t as (
select
if(get_json_object(c1, '$.score') > 90, '優',
if(get_json_object(c1, '$.score') > 80,'良',
if(get_json_object(c1, '$.score') > 60,'中','差')
)
) grade
from t6
)
select grade,count(1) from t group by grade
order by
case grade when '優' then 1
when '良' then 2
when '中' then 3
when '差' then 4
end
;第四題:
with t as (
select *,row_number() over (partition by uid order by dt ) xh from t_useractive
)
select uid,date_sub(dt,xh),count(1) from t group by uid,date_sub(dt,xh) having count(1) >=3;
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。