经典SQL 问题,高手请进! Top 10% 的查看

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:27:59
一个表 Transcript(StudentID, Grade),请用SQL语句写出要查看得分排名在前10% 的学生 ID,和成绩.

注: 不要用 SELECT TOP 10 PERCENT

可以分两步:
1:找出学生总数:select count(*) from Transcript,假设其总数为N
2:找出排名在0.1×N之前的学生:select * from Transcript a where (select count(*) from Transcript b where b.grade>a.grade)<=0.1*N
说明:
可将1,2步结合到一起,成为一条SQL语句。对于不同的数据库,可能需要一些细节上的变化,但基本原理如上相同。如不太理解,请给我留言。

declare @p int
select @p=count(1) from Transcript
set @p=@p/10
exec('select top '+ @p+' * from Transcript order by Grade desc')

maybe you want:
select * from transcript where
grade in (select top 10 grade from transcipt order by grade desc)

我觉得前10%的学生是一个固定值,比如有一百个学生其值为10
相应的语句只要取出这个值的语句

不可能实现