带有相关表和的SQL查询

Jef*_*f G 3 sql sum

有下表:

 Clients (ID, LastName)

 Orders (ID, ClientID)

 Payments (ID, OrderID, PaymentDate, Amount)
Run Code Online (Sandbox Code Playgroud)

我需要一个SQL查询,它将返回在给定日期之后付款的客户LastNames列表,该日期总计至少有一些金额.

示例:检索2011年1月1日之后至少为1,000美元的所有客户.

我可以得到自指定日期(2011年1月1日)以来付款的客户,如下所示:

 SELECT Clients.LastName
 FROM   Clients
 WHERE  Clients.ID IN (SELECT Orders.ClientID
                       FROM   Orders
                       WHERE  Orders.ID IN (SELECT Payments.OrderID
                                            FROM   Payments
                                            WHERE  Payments.PaymentDate >= '2011-01-01'))
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何只获得这些付款加起来至少给定金额的客户.

Blo*_*ard 5

我想你可以使用这样的东西:

select c.ID, c.LastName
from Clients c
join Orders o on o.ClientId=c.Id
join Payments p on p.OrderId=o.Id
where p.PaymentDate >= '2011-01-01'
group by c.ID, c.LastName
having sum(p.PaymentAmount) > 1000
Run Code Online (Sandbox Code Playgroud)