Hive中找出分組第一的記錄

2021-10-01 16:41:38 字數 897 閱讀 9326

使用group by進行分組查詢只能獲取分組列以及聚合函式列,如果想要獲取表中非分組列則獲取不到,此時可以使用row_number()對分組進行排序,同時也可以獲取非分組列。

學生課程分數表,三列

create table student_score

( student_id int, --學生id

subject string, -- 課程

score int -- 分數

);

insert into  student_score(student_id, subject, score) values

(1, '語文』, 77),(1, '數學』, 80),(1, '英語』, 83),

(2, '語文』, 81),(2, '數學』, 90),(2, '英語』, 95),

(3, '語文』, 85),(3, '數學』, 83),(3, '英語』, 78),

(4, '語文』, 75),(4, '數學』, 96),(4, '英語』, 81);

找出每門課分數最高的學生及分數

select student_id, subject, score

from

( select student_id, subject, score,

row_number() over(partition by subject order by score desc) as row_num

from student_score

)tmp where row_num =1;

結果

3,'語文』,85

4,'數學』,96

2,'英語』,95

Hive分組取第一條記錄

交易系統,財務要求維護每個使用者首個交易完成的訂單資料 首單表,可取每個使用者交易完成時間最老的訂單資料 舉例 簡寫版的表結構 表資料 則 財務希望彙總記錄如下 uidorder id service completion time244 2017 02 03 12 23 01.0333 2017 ...

hive中的排序和分組

order by order by 會對輸入坐全域性排序,因此 只有乙個reducer 多個reducer會無法保證全域性有序 只有乙個reducer,會導致當輸入規模較大時,需要較長的計算時間.set hive.mapred.mode nonstrict default value 預設值 set...

查詢分組中每組第一條記錄組成的表

表xjgl id xh fenshu time xh表示 學號 fenshu表示分數 time表示時間 乙個xh也就是乙個學生對應多條記錄,但是我現在想查得每個學生最近一次的記錄,其它記錄都不要,有人想先將此表按學號分組,然後在每一組中取出第一條,組成乙個表 但是group by 不能完成此功能 可...