以下是父/子關係中的兩個表。 什麼,我需要做的是有平均成績來選擇學生:如何在這種情況下重寫選擇查詢
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