最近在寫后台語句時候,運用到了partition這樣一個關鍵字。
先大致說一下背景,有一種數據表,如下

現在需要取出,每一個人最近的一次打卡時間。
思路是,先把數據按照人名分組,然后在每個組里面按照時間排倒敘,最后取出每組的第一條數據即可。
partition的意思是對數據進行分區,sql語句如下
1 select * from 2 ( 3 SELECT 4 ROW_NUMBER() over(partition by [姓名] order by [打卡時間] desc) as rowNum 5 ,[姓名] 6 ,[打卡時間] 7 FROM [dbo].[打卡記錄表] 8 ) temp 9 where temp.rowNum = 1
通過 partition by [姓名] order by [打卡時間] desc,這句就可以做到,讓數據按照姓名分組,並且在每組內部按照時間進行排序
