|
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
> Original message text:
> 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
>
From: Akina - 12/08/2019 - 07:55:23
Subject:Создать список из 2 лучших продажников
-----------------
FAQ: Выборка нескольких последних записей в неких группах.
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=684431&msg=7489069
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
45483
|
|