Hive基本操作之平均成績(jī)、優(yōu)秀統(tǒng)計(jì)

有一組成績(jī)數(shù)據(jù)(學(xué)號(hào);科目;成績(jī))

1001 01 90
1001 02 90
1001 03 90
1002 01 85
1002 02 85
1002 03 70
1003 01 70
1003 02 70
1003 03 85

啟動(dòng)hive交互模式,選庫(kù)

[root@yaong ~]# hive
hive (default)> use default;

建成績(jī)表

create table score(
    uid string,
    subject_id string,
    score int)
row format delimited fields terminated by '\t'; 

導(dǎo)數(shù)據(jù)入表

hive (default)> load data local inpath '/data/scores.dat' into table score;

查看導(dǎo)入數(shù)據(jù)

hive (default)> select * from score;

1001 01 90
1001 02 90
1001 03 90
1002 01 85
1002 02 85
1002 03 70
1003 01 70
1003 02 70
1003 03 85

計(jì)算平均成績(jī)

select
    uid,
    score,
    avg(score) over(partition by subject_id) avg_score
from
    score;

uid score avg_score
1003 70 81.66666666666667
1002 85 81.66666666666667
1001 90 81.66666666666667
1003 70 81.66666666666667
1002 85 81.66666666666667
1001 90 81.66666666666667
1003 85 81.66666666666667
1002 70 81.66666666666667
1001 90 81.66666666666667

以平均成績(jī)做標(biāo)記(大于標(biāo)0,否則標(biāo)1)

select
    uid, score, avg_score,
    if(score>avg_score,0,1) flag
from
(select
    uid,
    score,
    avg(score) over(partition by subject_id) avg_score
from
    score) as t1;

uid score avg_score flag
1003 70 81.66666666666667 1
1002 85 81.66666666666667 0
1001 90 81.66666666666667 0
1003 70 81.66666666666667 1
1002 85 81.66666666666667 0
1001 90 81.66666666666667 0
1003 85 81.66666666666667 0
1002 70 81.66666666666667 1
1001 90 81.66666666666667 0

統(tǒng)計(jì)flag和為0的學(xué)號(hào)(所有學(xué)科都大于平均成績(jī))

select
    uid
from
(select
    uid, score, avg_score,
    if(score>avg_score,0,1) flag
from
(select
    uid,
    score,
    avg(score) over(partition by subject_id) avg_score
from
    score) as t1) as t2
group by uid
having sum(flag)=0;

uid
1001

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、SQL介紹 結(jié)構(gòu)化查詢語(yǔ)言5.7 以后符合SQL92嚴(yán)格模式通過sql_mode參數(shù)來控制 2、常用SQL分類...
    小一_d28d閱讀 362評(píng)論 0 0
  • 數(shù)據(jù)庫(kù)-Mysql初級(jí) 一、應(yīng)用場(chǎng)景 1、數(shù)據(jù)校驗(yàn):在測(cè)試過程中,經(jīng)常需要檢查前臺(tái)后臺(tái)數(shù)據(jù)是否一致。 比如:就拿當(dāng)...
    許大水閱讀 524評(píng)論 0 0
  • [{"reportDate": "2018-01-23 23:28:49","fluctuateCause": n...
    加勒比海帶_4bbc閱讀 898評(píng)論 1 2
  • 第一章 1.Linux是一套免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),它可以基于Intel x86系列處理器以及Cy...
    yansicing閱讀 5,593評(píng)論 0 9
  • 數(shù)據(jù)庫(kù)的內(nèi)置功能 1.1連接數(shù)據(jù)庫(kù) -u -p -S -h -P -e <列子 1mysql -uroot ...
    桑正閱讀 344評(píng)論 0 1

友情鏈接更多精彩內(nèi)容