比較的に複雑なsql面接問題

1629 ワード

一、グループ統計各クラスの点数上位3名(LeetCode:185.Department Top Three Salariesに等しい)
テーブル構造:
create table student(

id varchar(20),--   

class varchar(20),--   

score int--   

);
insert student values('1','   ',82);

insert student values('2','   ',95);

insert student values('3','   ',82);

insert student values('4','   ',40);

insert student values('5','   ',20);

insert student values('6','   ',95);

insert student values('7','   ',40);

insert student values('8','   ',3);

insert student values('9','   ',60);

insert student values('10','   ',10);

insert student values('11','   ',70);

insert student values('12','   ',60);

insert student values('13','   ',40);

insert student values('14','   ',90);

sql:
select a.class,a.score 
from student a 
where (select count(*) from student where class=a.class and a.score

二、LeetCode:262. Trips and Users
テーマの詳細は以下を参照してください.https://leetcode.com/problems/trips-and-users/
sql:
SELECT Request_at Day,
       ROUND(SUM(IF(Status = 'completed', 0, 1)) / COUNT(*), 2) 'Cancellation Rate'
FROM   Trips t
LEFT   JOIN Users t1 ON t.Client_Id = t1.Users_Id
WHERE  t1.Banned = 'No' AND Request_at BETWEEN '2013-10-01' AND '2013-10-03'
GROUP  BY t.Request_at;