Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сделать запрос продавцы и покупатели  [new]
Sveta82
Member

Откуда:
Сообщений: 48
Всем здравствуйте. Помогите как решить такую задачу. Есть две таблицы Customers (ID, CustomerID) и Sales (ID, Date, Salesman, CustomerName, CustomerID, Product). Необходимо найти только тех продавцов, которые сделали больше десяти продаж за определенный период, причем только тем покупателям, которые есть в в таблице Customers. То есть если была продажа покупателю не из таблицы, то продавца считать не надо. Если делать через JOIN по CustomerID, то не видно были ли продажи другим покупателям. Буду рада любой идее!
5 авг 17, 10:11    [20702417]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос продавцы и покупатели  [new]
aleks222
Guest
1. Здесь не приветствуются тестовые задачи.
2. Ты не умеешь внятно формулировать - на работу не возьмут. Я так и не понял: кто на ком стоял?
3. Продавцы, которые сделали более десяти продаж только указанным покупателям.
select Salesman, cnt = count(*)
  from Sales as s inner join Customers as c on c.CustomerID = s.CustomerID
  where s.Date between @Date1 and @Date2
  group by Salesman
  having count(*) > 10


4. Продавцы, которые сделали более десяти продаж ВСЕГО, в том числе хотя бы одному из указанных покупателей.
select Salesman, cnt = count(*)
  from Sales as s 
  where s.Date between @Date1 and @Date2
            and exists( select * from Sales as ss inner join Customers as c on c.CustomerID = ss.CustomerID
                                where ss.Date between @Date1 and @Date2
                                          and ss.Salesman = s.Salesman
                           )
  group by Salesman
  having count(*) > 10
5 авг 17, 11:38    [20702461]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос продавцы и покупатели  [new]
Бен-Ган
Guest
Есть еще вариант с оператором CROSS APPLY.
5 авг 17, 11:51    [20702467]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос продавцы и покупатели  [new]
Sveta82
Member

Откуда:
Сообщений: 48
aleks222,Вариант в подпункте 3 я как раз и использовала, но если продавец продал товар покупателю не в списке, то значит у него продаж больше 10, просто их не видно из-за JOIN. Надо исключить всех продавцов, которые делали продажи покупателям , которых нет в списке, продажи таких продавцов вообще не считать.
5 авг 17, 16:59    [20702665]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос продавцы и покупатели  [new]
Remind
Member

Откуда: UK
Сообщений: 523
Sveta82,

select Salesman, cnt = count(*)
from Sales as s 
where s.Date between @Date1 and @Date2
          and not exists( select * from Sales as ss left join Customers as c on c.CustomerID = ss.CustomerID
                              where ss.Date between @Date1 and @Date2
                                        and ss.Salesman = s.Salesman
                                        and c.CustomerID is NULL
                         )
group by Salesman
having count(*) > 10
5 авг 17, 19:06    [20702777]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос продавцы и покупатели  [new]
aleks222
Guest
Sveta82
aleks222,Вариант в подпункте 3 я как раз и использовала, но если продавец продал товар покупателю не в списке, то значит у него продаж больше 10, просто их не видно из-за JOIN. Надо исключить всех продавцов, которые делали продажи покупателям , которых нет в списке, продажи таких продавцов вообще не считать.


С таким косноязычием - лучше сразу в управдомы.
6 авг 17, 04:56    [20703213]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать запрос продавцы и покупатели  [new]
Sveta82
Member

Откуда:
Сообщений: 48
Remind, спасибо Вам огромное! То что нужно!
26 авг 17, 22:36    [20751434]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить