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

Откуда:
Сообщений: 31
Вывести максимальную из средних заработных плат отделений компании.
Диаграмма БД прикреплена.
Этот вариант как-то неоч(
declare @i int;   -- объявляем переменную i
declare @max money;
declare @tmp money;
declare @j int;  -- переменная потому что mssql может выводить только char!
set @i = 1;   -- устанавливаем значение переменной i
set @max = 0;
while @i < (SELECT COUNT(Branch_no) FROM [DreamHome].[dbo].[BRANCH])   -- создаем цикл, пока i меньше миллиарда выполнять то что между begin и end
begin
  set @tmp = (SELECT AVG(Salary) FROM [STAFF] WHERE Branch_no = @i); 
  if(@max < @tmp) BEGIN
	set @max = @tmp;
	set @j=@i;
  END
  set @i = @i + 1;  
end;
SELECT AVG(Salary) FROM [STAFF] WHERE Branch_no = @j


К сообщению приложен файл. Размер - 23Kb
14 дек 15, 23:30    [18560169]     Ответить | Цитировать Сообщить модератору
 Re: Вывести максимальную из средних заработных плат отделений компании.  [new]
Добрый Э - Эх
Guest
sergey_viper,

читать про TOP n запросы. Если одинаковых максимальносредних зарплат может быть больше одной, то ещё и WITH TIES
15 дек 15, 04:58    [18560612]     Ответить | Цитировать Сообщить модератору
 Re: Вывести максимальную из средних заработных плат отделений компании.  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
sergey_viper,

от курсоров сразу отвыкайте.
простой путь:
1) пишете запрос который находит среднею по отделам
2) пишете запрос который из (1) находит максимальную

select max(
...

from
   (select avg(.....
    from [STAFF]
    group by
    ) as a 
15 дек 15, 11:29    [18561590]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить