Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
45483



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |