SQL Запрос на подсчет> 2 заказов в конкретном году - PullRequest
1 голос
/ 11 марта 2020

У меня есть две таблицы. salesreps со столбцами: SRepID, SRepName, SRepPhone

orders со столбцами: OrderID, CustomerID, SRepID, OrderDate

Мне нужно вернуть все SRepName, которые обработали как минимум два заказа в 2019 году.

Я полностью потерялся в этом и хотел бы получить pu sh в правильном направлении.

Я делаю это в SQL Workbench.

Ответы [ 3 ]

1 голос
/ 11 марта 2020
select SRepName from salesReps
inner join Orders on salesReps.SRepID = orders.SRepID
where orderDate >= '2019-01-01' and orderDate <  '2020-01-01'
group by sRepName
having count(OrderId) >1
1 голос
/ 11 марта 2020

Вы можете использовать коррелированный подзапрос для подсчета количества заказов на одного торгового представителя:

select s.*
from salesrep s
where (
    select count(*) 
    from orders o 
    where 
        o.repId = s.sRepId
        and o.orderDate >= '2019-01-01'
        and o.orderDate <  '2020-01-01'
 ) >= 2

Или вы можете использовать агрегацию. Это требует, чтобы вы перечислили столбцы, которые вы хотите вернуть, но также дает вам возможность использовать агрегатные функции для заказов:

select
    s.sRepId,
    s.sRepName,
    count(*) no_orders,
    max(o.OrderDate) last_order_date
from salesrep s
inner join orders o on o.repId = s.sRepId
where o.orderDate >= '2019-01-01' and o.orderDate <  '2020-01-01'
group by s.sRepId, s.sRepName
having count(*) > 1
0 голосов
/ 11 марта 2020
select SRepName
      ,count(OrderID)
  from salesreps s
 inner join orders o
    on s.SRepID = o.SRepID
 where year(OrderDate) = '2019'
group by SRepName
having count(OrderID) >= 2
...