SQL面試題:找到每個人最新的一條數據


SQL面試題:在t_score表中,找到表中每個人最近的一條分數

username score time
小明 98 2021-07-29
小明 90 2021-07-01
小紅 96 2021-07-15
小紅 100 2021-06-21
小李 95 2021-05-03

結果就應該是

username score time
小明 98 2021-07-29
小紅 96 2021-07-15
小李 95 2021-05-03

兩種解法:

雙表聯查

SELECT t1.* FROM t_score t1
INNER JOIN (SELECT username, MAX(time) AS time FROM t_score GROUP BY username) t2
ON t1.username = t2.username AND t1.time = t2.time

開窗函數(MySQL不支持)

SELECT * FROM (
SELECT *, row_number() over (partition by username order by time desc) AS rn FROM t_score
) WHERE rn = 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM