Новости
Документация
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

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



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