SQL Syntax-Value Expressions window function call 例如 CREATE TABLE window_test(id int, name text, subject text, score numeric); INSERT INTO window_test VALUES(1,'digoal',' 数学 ',99.5), (2,'digoal',' 语文 ',89.5), (3,'digoal',' 英语 ',79.5), (4,'digoal',' 物理 ',99.5), (5,'digoal',' 化学 ',98.5), (6,' 刘德华 ',' 数学 ',89.5), (7,' 刘德华 ',' 语文 ',99.5), (8,' 刘德华 ',' 英语 ',79.5), (9,' 刘德华 ',' 物理 ',89.5), (10,' 刘德华 ',' 化学 ',69.5), (11,' 张学友 ',' 数学 ',89.5), (12,' 张学友 ',' 语文 ',91.5), (13,' 张学友 ',' 英语 ',92.5), (14,' 张学友 ',' 物理 ',93.5), (15,' 张学友 ',' 化学 ',94.5); -- 取出每门课程的第一名 . SELECT id,name,subject,score FROM (SELECT row_number() OVER (PARTITION BY subject ORDER BY score DESC) AS rn,* FROM window_test) AS t WHERE rn=1 ORDER BY SUBJECT;