假設有一張表student
Name Score InsertTime (Name:姓名 Score:成績 InsertTime:考試時間)
張三 20 2015-08-08
李四 12 2015-09-01
小Q 33 2015-09-03
張三 20 2015-09-08
李四 12 2015-07-01
小Q 25 2015-06-03
現在要求每個人按照考試時間的先后順序進行排序,請寫出Oracle語句
答:
select row_number() over(partition by name order by inserttime) row_number,student.* from student
解釋:
partition by 根據名字先進行分組,order by 在根據inserttiom進行排序
結果
張三 20 2015-08-08
張三 20 2015-09-08
李四 12 2015-07-01
李四 12 2015-09-01
小Q 25 2015-06-03
小Q 33 2015-09-03
這種方法可以靈活應用。比如取每個分組中的最新數據或者第一條數據
select row_number() over(partition by name order by inserttime) row_number,student.* from student where row_number=1
張三 20 2015-08-08
李四 12 2015-07-01
小Q 25 2015-06-03
有問題直接留言 第一時間回復
新聞熱點
疑難解答