Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> формирование запроса 
V
    Опции темы
kuvshinka
Дата 1.9.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



есть табличка Tabl1:
N_otd- номер отдела
Name_rab - имя работника
Zarplata - его зарплата

Код

Select N_otd, max(Zarplata) from Tabl1 group by N_otd


выводит максимальную зарплату в каждом отделе....а как мне вывести к этому еще и имена соответствующих работников (у которых зарплаты макс-ны в каждом отделе)? ...что-то никак не выходит... 
PM MAIL   Вверх
Данкинг
Дата 1.9.2009, 13:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



А при чём здесь C++ ?

В общем, суть примерно такая, а там уже под синтаксис подгоняй:
Код

Select N_otd,Name_rab, Zarplata from table1 where zarplata in (select max(Zarplata) from Tabl1) group by N_otd



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
gordmiand
Дата 1.9.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Данкинг: по-моему Ваш запрос неверен....будет ошибка в группировке....

Это сообщение отредактировал(а) gordmiand - 2.9.2009, 10:02
PM MAIL   Вверх
kuvshinka
Дата 2.9.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



и правда - ошибка в группировке - там надо указывать все поля: N_otd,Name_rab, Zarplata но тогда получается результат - выводятся только отделы с максимальной из всех возможных зарплатой...а мне надо вывести макс. зарплату и соот-ее ей имя работника для ВСЕХ (каждого) отделов... 
PM MAIL   Вверх
kuvshinka
Дата 2.9.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



люююди....подскажите плиз как сделать этот запрос....ну никак не осилю я его...
PM MAIL   Вверх
chip_and_dayl
Дата 30.10.2009, 21:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Код

SELECT 
     Таб_работников.[Имя работника]
      ,sq.[ЗП_максимум],
      sq.ОТдел
      
  FROM (select ОТдел, Sum(ЗП) as ЗП_максимум from Таб_Работников group by ОТдел) sq, Таб_работников
where Таб_работников.ЗП=sq.ЗП_максимум and Таб_работников.ОТдел=sq.ОТдел
order by ОТдел


Должно быть что-то в таком роде. Но пока не до конца работает, до 22,00 попітаюсь еще в нем поковірятся

Это сообщение отредактировал(а) Rodman - 12.11.2009, 10:36


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
chip_and_dayl
Дата 30.10.2009, 22:00 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Код

SELECT 
     Name_rab, Zarplata, N_Otd

      
  FROM Таблица 
  where Zarplata in (Select MAX(Zarplata) from Таблица group by N_Otd)
  order by N_Otd


Все оказалось на много простейsmile Кстати,  то что выше тоже правильно. Просто вместо агрегатной функции SUM поставь  MAX. Меня что-то переглючило тогда smile

Это сообщение отредактировал(а) Rodman - 12.11.2009, 10:37


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Zloxa
Дата 12.11.2009, 10:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



ANSI:
Код

SELECT 
     Таблица.*
  FROM Таблица 
       ,(Select N_Otd, MAX(Zarplata) Zarplata  from Таблица group by N_Otd) s
  where Таблица.Zarplata = s.Zarplata
    and Таблица.N_Otd = s.N_Otd
    

MSSQL2005+, Oracle 8i+
Код

select
  *
from
 (select таблица.*
         ,row_number()/*или dense_rank*/ over (partition by N_Otd order by Zarplata desc) rn 
    from таблица) s
where rn = 1    


Это сообщение отредактировал(а) Zloxa - 12.11.2009, 10:54


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.