Вот две таблицы в отношениях родителя/ребенка. Что мне нужно сделать, это выбрать студентов там средний балл:как я могу переписать запрос выбора в этой ситуации
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;
Но результат является то, что все студенты с там они среднюю отметку в алфавиту order.What мне нужно ограничить набор результатов со студентами, которые имеют самую высокую среднюю оценку, чем другие, т. е. если у двух учеников есть знак avg 50 и 1 с 25, мне нужно отображать только тех студентов с 50. Если есть только один студент с наивысшей отметкой avg - только он должен появиться в наборе результатов. Как я могу сделать это наилучшим образом?
Какая версия SQL Server? –