SQL面试题,有这么个表fans(team,nationality,fanCount)'Barcelona','Germany',12000'Barcelona','Spain',18000'Barcelona','China',13000'Barcelona','USA',15000'Barcelona','Italy',11000'Real Madrid','France',19000'Real Madrid','Germany',13000'Real Mad

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/21 21:37:42
SQL面试题,有这么个表fans(team,nationality,fanCount)''Barcelona'',''Germany'',12000''Barcelona'',''Spain'',18000''Barc

SQL面试题,有这么个表fans(team,nationality,fanCount)'Barcelona','Germany',12000'Barcelona','Spain',18000'Barcelona','China',13000'Barcelona','USA',15000'Barcelona','Italy',11000'Real Madrid','France',19000'Real Madrid','Germany',13000'Real Mad
SQL面试题,
有这么个表
fans(team,nationality,fanCount)
'Barcelona','Germany',12000
'Barcelona','Spain',18000
'Barcelona','China',13000
'Barcelona','USA',15000
'Barcelona','Italy',11000
'Real Madrid','France',19000
'Real Madrid','Germany',13000
'Real Madrid','USA',17000
'Real Madrid','Korea',16000
'Real Madrid','UK',12000
现在分别要求出每个team粉丝数最多的3个国家
select *
from fans t1
where
(
select count(*)
from fans t2
where t1.team=t2.team
and t2.fanCount>=t1.fanCount
)

SQL面试题,有这么个表fans(team,nationality,fanCount)'Barcelona','Germany',12000'Barcelona','Spain',18000'Barcelona','China',13000'Barcelona','USA',15000'Barcelona','Italy',11000'Real Madrid','France',19000'Real Madrid','Germany',13000'Real Mad
select count(*)
from fans t2
where t1.team=t2.team
and t2.fanCount>=t1.fanCount
获取当前TEAM中,FANCOUNT比当前记录的FANCOUNT多的记录的数量.
当这个数量小于等于3时,就是这个TEAM的FANCOUNT的前三名.
例如:
第一个记录时,有四条记录符合这个条件,所以第一个记录不是前三名的.
第二个记录时, 只有一条记录符合这个条件,所以这个记录是第一名.
第三个记录时, 有三条记录符合这个条件,所以这个记录是第三名.
第四个记录时, 有二条记录符合这个条件,所以这个记录是第二名.
以此类推.