今天群里看到一個問題,在這里概述下:查詢出不同分類下的最新記錄。一看這不是很簡單的么,要分類那就用Group By;
要最新記錄就用Order By唄。然后在自己的表中試着做出來:
首先呢我把表中的數據按照提交時間倒序出來:
“corp_name”就是分類的GUID(請原諒我命名的隨意性)。 OK, 這里按照最開始的想法加上Group By來看一下顯示效果:
呃,嗯。這尼瑪和想象中的結果不一樣啊,看來寫代碼還是要理性分析問題,意念是無法控制結果滴!
既然要求是不同分類的數據,除了使用Group By之外,還有別的函數能用嗎?度娘了一下結果還真有,over(partition by )函數,那么它和平時用的Group By有什么區別呢? Group By除了對結果進行單純的分組之外呢,一般都和聚合函數一起使用,Partition By也具有分組功能,屬於Oracle的分析函數,在這里就不詳細的不啦不啦不啦了。
看代碼:
over(partition by corp_name order by submit_time desc ) as t 。就是按照corp_name分類並按時間倒序出來,"t" 這里一列呢就是不同corp_name類出現的次數,需求是只查詢出不同分類的最新提交數據,那么我們只需要針對"t"再進行一次篩選即可:
好啦,結