前幾天參加一個面試,面試公司讓做一套題,sql題不是很難,但是我第一次還是寫錯了,回來后,重新寫了下。簡單記錄下吧,
1.題目:

2.測試數據
select * from student ;
insert into student(name,subject,score) values('張','語文',96) ;
insert into student(name,subject,score) values('張','數學',62) ;
insert into student(name,subject,score) values('張','英語',85) ;
insert into student(name,subject,score) values('王','語文',12) ;
insert into student(name,subject,score) values('王','英語',100) ;
insert into student(name,subject,score) values('李','數學',10) ;
insert into student(name,subject,score) values('趙','英語',88) ;
student表 ,一共三個字段 name ,subject ,score (數據類型分別為 varchar(50),varchar(50),int),測試表,比較簡單。
3.我寫的sql
select m.name from ( select s.name ,s.score ,DENSE_RANK() over(PARTITION by s.name order by s.score asc) as score_rank from student s ) m where m.score_rank = 1 and m.score >=60 ;
4.分析

以姓名相同的為一組,對其成績進行排序。然后取其成績最大值(rank=1的)大於60的人員。
最終查詢結果:
如有異議,歡迎指正。
