Hive -------- hive常見查詢練習

Z_Data發表於2018-11-13

表名和欄位

–1.學生表 
Student(s_id,s_name,s_birth,s_sex) –學生編號,學生姓名, 出生年月,學生性別 
–2.課程表 
Course(c_id,c_name,t_id) – –課程編號, 課程名稱, 教師編號 
–3.教師表 
Teacher(t_id,t_name) –教師編號,教師姓名 
–4.成績表 
Score(s_id,c_id,s_score) –學生編號,課程編號,分數

測試資料

--建表--學生表
CREATE TABLE test.Student(s_id int,s_name string,s_birth string,s_sex string) row format delimited fields terminated by ',';
--課程表
CREATE TABLE test.Course(c_id  int,c_name string ,t_id int) row format delimited fields terminated by ',';
--教師表
CREATE TABLE test.Teacher(t_id int,t_name string)row format delimited fields terminated by ',';
--成績表
CREATE TABLE test.Score(s_id int,c_id  int, s_score int)row format delimited fields terminated by ',';
--學生表測試資料
01,zhaolei,1990-01-01,male
02,qianfeng,1990-12-21,male
03,sunfeng,1990-05-20,male
04,liyun,1990-08-06,male
05,zhoumei,1991-12-01,female
06,wulan,1992-03-01,female
07,zhengzu,1989-07-01,female
08,wangju,1990-01-20,female
 
--課程表測試資料
01,chinese,02
02,math,01
03,english,03
 
--教師表測試資料
01,laochang
02,dazhao
03,laoli
 
--成績表測試資料
01,01,80
01,02,90
01,03,99
02,01,70
02,02,60
02,03,80
03,01,80
03,02,80
03,03,80
04,01,50
04,02,30
04,03,20
05,01,76
05,02,87
06,01,31
06,03,34
07,02,89
07,03,98

練習題和sql語句

基礎sql語句

  1. 統計每個學生的總分。
  1. 統計出學號和總分
   select s_id , sum(s_score) as zf  from  score  group  by s_id

上表結果和stuent做join連線

select stu.s_name,zf.ss from

(select s_id , sum(s_score) as ss from score group by s_id) as  zf

Join

student  as stu

on  stu.s_id=zf.s_id;

2.查詢表中所有學生的姓名和對應的英語成績。

select stu.s_name,c.c_name,s.s_score from

     score as s 

     join

     course as c

     on s.c_id=c.c_id

     join

     student as stu

     on stu.s_id = s.s_id

     where

     c.c_name = 'english';

3. 在所有學生總分數上加10分特長分。

關鍵程式碼

  select s_id,sum(s_score)+10 from score group by s_id;
  1. 查詢姓名為liyun的學生總成績
 select sum(s_score) from score where  s_id in (select s_id from student where        s_name='liyun');

查詢英語成績大於90分的同學

 

8.查詢總分大於270分的所有同學

 

  1. 查詢英語分數在 80-90之間的同學。

 

  1. 查詢數學分數為89,90,91的同學。

 

  1. 查詢所有姓li的學生平均成績。

 

  1. 查詢數學分>80,語文分>80的同學。

 

  1. 對數學成績排序後輸出。

 

  1. 對總分排序後輸出,然後再按從高到低的順序輸出

 

  1.  對姓li的學生數學成績排序輸出

 

 

相關文章