powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос который по каждому менеджеру показывает сумму продаж
6 сообщений из 6, страница 1 из 1
Запрос который по каждому менеджеру показывает сумму продаж
    #40122362
Andrey_96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опишите запрос SELECT, который по каждому менеджеру показывает: (id, name, salary, plan, сумму продаж – total, которую совершил менеджер). Отсортируйте менеджеров по total (по убыванию). И сделайте так, чтобы если у менеджера нет продаж, то в столбце total было 0.

У меня получается так:

select s.manager_id as id, m.name, m.salary * 1000 salary, m.plan * 1000 plan, ss.total from sales s
Join managers m On m.id=s.manager_id
Join (
select sp.sale_id, sum(sp.price * sp.qty) total from sale_positions sp
GROUP BY sp.sale_id
) ss on s.id=ss.sale_id
Order By total desc

id name salary plan total4 Dasha 90000 90000 30004 Dasha 90000 90000 30005 Sasha 70000 70000 30001 Vasya 100000 0 20002 Petya 80000 80000 12003 Vanya 60000 60000 12005 Sasha 70000 70000 1000

А должно быть так:

id name salary plan total4 Dasha 90000 90000 60005 Sasha 70000 70000 40001 Vasya 100000 0 20002 Petya 80000 80000 12003 Vanya 60000 60000 12006 Masha 50000 50000 0

Как можно это сделать ?
...
Рейтинг: 0 / 0
Запрос который по каждому менеджеру показывает сумму продаж
    #40122379
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12561782
тебе сюда, двоечник.
...
Рейтинг: 0 / 0
Запрос который по каждому менеджеру показывает сумму продаж
    #40122383
Andrey_96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mefman, Здравствуйте, извиняюсь, забыл, но потом уже было изменить нельзя
...
Рейтинг: 0 / 0
Запрос который по каждому менеджеру показывает сумму продаж
    #40123196
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз тебе нужны все менеджеры - с них и начни.
К ним присобачь по left join продажи, а к ним так же и собственно чеки.
Все это group by нужным полям, а это у тебя поля по менеджеру. Т.к. есть id то можно сделать group by id а остальные поля менеджера взять как max().

Так как соединение по left join а в правой части есть пустые места - там будут NULL которые возможно придется подменить на 0 какой-либо функцией. Я не спец по постгрессу, не буду сюда тащить синтаксис Firebird.
...
Рейтинг: 0 / 0
Запрос который по каждому менеджеру показывает сумму продаж
    #40123198
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select
  managers.id          as id,
  --
  max(managers.name  ) as name,
  max(managers.salary) as salary,
  max(managers.plan  ) as plan,
  --
  sum(coalesce(sale_positions.price * sale_positions.qty, 0)) as total

from managers
  left join sales          on (sales.manager_id       = managers.id) 
  left join sale_positions on (sale_positions.sale_id = sale.id    )

group by
  managers.id

order by 
  5 desc


Как-то в эту сторону я бы думал.
...
Рейтинг: 0 / 0
Запрос который по каждому менеджеру показывает сумму продаж
    #40123309
Andrey_96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fraks, Спасибо, только там во втором джойне ошибка с условиями, должно быть так: (sale_positions.sale_id = sales.id)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Запрос который по каждому менеджеру показывает сумму продаж
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]