Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как выбрать максимальное из средних значений  [new]
dkost
Member

Откуда:
Сообщений: 5
CREATE TABLE [dbo].[students](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) COLLATE Cyrillic_General_CI_AS NOT NULL,
CONSTRAINT [PK_students] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


CREATE TABLE [dbo].[results](
[id] [int] NOT NULL,
[subject] [nvarchar](50) COLLATE Cyrillic_General_CI_AS NOT NULL,
[mark] [real] NOT NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[results] WITH CHECK ADD CONSTRAINT [FK_students_results] FOREIGN KEY([id])
REFERENCES [dbo].[students] ([id])

есть вот такой запрос

SELECT [test11].[dbo].[students].[name] as 'фамилия',
isnull(avg([test11].[dbo].[results].[mark]), 0) as 'средний бал'
FROM [test11].[dbo].[students]
left outer join [test11].[dbo].[results]
on [test11].[dbo].[students].[id] = [test11].[dbo].[results].[id]
group by [test11].[dbo].[students].[name]

он выдает средние значения, требуется получить максимальное из средних знаний, функцию МАХ применить не удается
Спасибо
24 ноя 09, 01:41    [7967431]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное из средних значений  [new]
iljy
Member

Откуда:
Сообщений: 8711
dkost,

что значит "функцию МАХ применить не удается"? Что мешает? Надо просто одно максимальное значение? Или все - и максимальное? Если 2005 и выше - попробуйте так:
select name 'фамилия', avg_mark 'средний бал', max(avg_mark) over() 'максимальный средний балл'
(	 
	 SELECT s.[name],
				isnull(avg(r.[mark]), 0) avg_mark
	 FROM [test11].[dbo].[students] s
			  left outer join [test11].[dbo].[results] r
					   on s.[id] = r.[id]
	  group by s.[name]
)
24 ноя 09, 01:57    [7967455]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное из средних значений  [new]
dkost
Member

Откуда:
Сообщений: 5
2005

Я уже такой запрос пробовал, не получается, пишет что не удается привязать составной идентификатор.
Достаточного одного максимального значения среднего бала
24 ноя 09, 02:29    [7967482]     Ответить | Цитировать Сообщить модератору
 Re: как выбрать максимальное из средних значений  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT TOP(1) s.[name][фамилия], ISNULL(AVG(r.[mark]),0)[средний бал]
FROM [test11].[dbo].[students] s LEFT JOIN [test11].[dbo].[results] r ON s.[id]=r.[id]
GROUP BY s.[name]
ORDER BY ISNULL(AVG(r.[mark]),0) DESC;
24 ноя 09, 08:59    [7967735]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить