以下是父/子关系中的两个表。 什么,我需要做的是有平均成绩来选择学生:如何在这种情况下重写选择查询
CREATE TABLE dbo.Students(
Id int NOT NULL,
Name varchar(15) NOT NULL,
CONSTRAINT PK_Students PRIMARY KEY CLUSTERED
(
CREATE TABLE [dbo].[Results](
Id int NOT NULL,
Subject varchar(15) NOT NULL,
Mark int NOT NULL
)
ALTER TABLE [dbo].[Results] WITH CHECK ADD CONSTRAINT [FK_Results_Students] FOREIGN KEY([Id])
REFERENCES [dbo].[Students] ([Id])
我写这样的查询:
SELECT name , coalesce(avg(r.[mark]),0) as Avmark
FROM students s
LEFT JOIN results r ON s.[id]=r.[id]
GROUP BY s.[name]
ORDER BY ISNULL(AVG(r.[mark]),0) DESC;
但结果是,所有学生desc中有平均大关order.What我需要是限制结果集与学生的平均分最高agaist其他,如果是两个学生平均分50和1与25我只需要显示那些学生与50.如果只有一个学生的平均分数最高 - 只有他必须出现在结果集中。我怎样才能以最好的方式做到这一点?
什么版本的SQL Server? – 2009-12-27 19:53:11