2010-03-15 80 views
1

我有一个问题和没有它不是作业,它只是一个程序员谁已经离开SQL很长一段时间不得不解决问题。基本sql组由百分比

我有如下表:

create table students(
    studentid int identity(1,1), 
    [name] varchar(200), 
    [group] varchar(10), 
    grade numeric(9,2) 
) 
go 

该集团是任意的东西,假设它是下面的“组A”,“B组” ......等等。

等级为上0分 - 100

如果有5个学生每组等级随机分配在,什么是基于获得的前3的学生(顶部80%)的最佳方法在他们的成绩?

更具体的,如果我有以下几点:

Ronald, Group A, 84.5 
George H, Group A, 82.3 
Bill, Group A, 92.0 
George W, Group A, 45.5 
Barack, Group A, 85.0 

我会回来罗纳德·比尔,和巴拉克。我还需要对其他组进行此操作。

+1

我认为巴拉克应该在此时得到一个不完整的:) – Ray 2010-03-15 20:16:56

+0

是什么80%意味着什么?最好的80%的学生? 80%百分位数(前20%的学生)?得分超过80分的学生?得分高于平均分80%的学生? – van 2010-03-15 20:20:02

回答

1

使用TOP (n) PERCENT条款:

SELECT TOP (60) PERCENT * FROM students ORDER BY grade DESC