hive 練習題 求學生選課情況

2021-08-20 16:14:17 字數 2263 閱讀 2641

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中其中幾門。

建表語句

create table t_course(id int,course string)

row format delimited fields terminated by ","

匯入資料

load data local inpath "/home/hadoop/course/course.txt" into table t_course;
編寫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 id_courses as

select t1.id as id,t1.course as

id_courses,t2.course courses

from

( select id as id,collect_set(course) as course from t_course group

byid ) t1

join

(select collect_set(course) as course from t_course) t2;

collect_set(屬性名)   收集屬性 所對應的value   將所有的value  放入乙個 陣列中   且不重複

舉個例子        根據id  來獲取id所對應的

繼續回到 題目  檢視一下當前的表id_courses

進行下一步  將 idcourses  與  courses 進行對比 篩選出我們的資料

補充一下

array_contains(陣列, value)    用於 判斷  陣列中是否還有value  如果存在返回true

case  when  (條件) 

then 條件成立

else

條件不成立

end

Hive練習題目

hive 基本操作 1 資料自己造 a表 id int,name string b表 id int,job id int,num int c表 job id int,job string 建表語句 載入資料 a表和b表進行鏈結操作,並觀察結果 內連線 左連線 left join 小表在前,大表在後 ...

Hive視窗函式練習題

0 jdbc hive2 node03 10000 create table view log name string,time string,views int row format delimited fields terminated by 0 jdbc hive2 node03 10000 ...

CCF 練習題201703 2 學生排隊

體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。例如,下面給出了一組移動的例子,例子中學生的人數為8人。0 初始佇列中學生的學號依次為1,2,3,4,5,6,...