|
MySQL.RU - Webboard
Вернуться
Создать список из 2 лучших продажников (Jora) 11/08/2019 - 07:38:08
Re: Создать список из 2 лучших продажников (Akina) 12/08/2019 - 07:55:23
Re: А если сервер - восьмой версии... (Akina) 12/08/2019 - 07:56:17
From: Jora - 11/08/2019 - 07:38:08
Subject:Создать список из 2 лучших продажников
-----------------
Создать список из 2 лучших продажников по сумме продаж по каждому отделу, упорядоченных сумму продаж (по убыванию).
Например так
---------------------------------------------
Отдел Сотрудник Сумма макс
1 Пупкин 1000
1 Петров 200
2 Сидров 900
2 Васильев 300
---------------------------------------------
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 = Sal.Personal_id and Dep.id=Dep_id
group by Fio, Otdel
ORDER BY `sum(Summa)` DESC
Ставлю Limit 2, что выдает два максимальных, но не по отделам
---------------------------------------------
Отдел Сотрудник Сумма
1 Пупкин 1000
2 Сидров 900
---------------------------------------------
Нашел отличную статью https://sqlinfo.ru/articles/info/45.html, но в конец запутался. Там одна таблица без связей.
Полагаю оптимальный способ реализации следующий, но я что-то упускаю.
select t1.*
from (dep d, personal p, sal s) t1
inner join p on d.id = p.dep_id and
inner join s on p.personal_id=s.id and
s.summa >= s.summa
group by p.fio, d.otdel
having count(*) <=2;
ORDER BY `summa` DESC
Или например так, но то же не работает
select D.Otdel, top 2 temp.sum
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
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
45483
|
|