Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вывести по 2 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.

Di Профи (541), на голосовании 5 лет назад
Структура таблиц следующая:

Dep – таблица отделов:
Id – номер
Otdel – отделs

Personal – таблица сотрудники:
Id – номер
Fio – Фамилия сотрудника
Dep_id – отдел (ссылка на Dep.Id)

Sal – таблица продаж:
Id – номер
Personal_id – менеджер (ссылка на Personal.Id)
Summa– сумма продажи

Вывожу запрос следующий. Выдает полный список сотрудников и суммы продаж. Как можно выделить только двух лучших из всего списка. И выделить допутим по два лучших продажника по каждому отдела?

select Otdel, Fio,sum(Summa)
from Sal, Personal, Dep
where Personal.id = Sales.Personal_id and Dep.id=Dep_id
group by Fio, Otdel
order by sum(Summa) desc
Голосование за лучший ответ
Vasyok Просветленный (20090) 5 лет назад
надо выбирать отдел и заходить с ним в остальные таблицы, это кореллированый подзапрос

select D.Otdel, top 3 temp.summ
from Dep D
inner join (select * from Personal P inner join Sal S on P.Id=S.Personal_id where P.Dep_id=D.Id) temp
Group by D.Otdel
order by D.Otdel
DiПрофи (541) 5 лет назад
Спасибо за ответ! D.Otdel это Dep.Otdel? P и S и Dep D псевдонимы?
Vasyok Просветленный (20090) ну когда джоины юзаешь надо делать псевдонимы/алиасы temp тоже псевдоним, селект можно как таблицу в любое место сувать
Похожие вопросы