SQL 查询计算特定年份的 >2 个订单

SQL Query for counting >2 orders in a particular year

我有两张桌子。 salesreps 列:SRepID、SRepName、SRepPhone

orders 列:OrderID、CustomerID、SRepID、OrderDate

我需要return所有在2019年至少处理过两个订单的SRepName。

我完全迷失在这个问题上,希望朝着正确的方向前进。

我在 SQL Workbench 中这样做。

您可以使用相关子查询来计算每个销售代表的订单数量:

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

或者您可以使用聚合。这要求您枚举您想要 return 的列,但也让您可以对订单使用聚合函数:

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
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
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