SQL:根据其他 table 的 WHERE 计算一个 table 中的值

SQL: count values in one table based on WHERE from other table

我不确定为什么这不起作用。

我有两个简单的 tables:

Orders
OrderTypeID EmployeeID   Completion_needed
10308       72             15%
10309       73             20%
10310       74             30%

Customers
Customer ID   OrderTypeID   OrderDate    Order_completed
    1          10308       2015-09-18          5%
    2          10309       2015-09-19          30%
    3          10310       2017-09-20          25%
    4          10308       2015-09-18          17%
    2          10308       2015-09-19          20%
    3          10309       2017-09-20          7%

我想计算有多少客户有未完成的订单,其中客户table中的Order_completed小于订单table中的Completion_needed(请不要一个客户可以有多个订单类型)。

这是我的查询,但我得到了错误的结果:

SELECT COUNT(c.CustomerID) as count_employees
FROM Orders od
JOIN Customers c
ON od.OrderTypeID = c.OrderTypeID
WHERE od.Completion_needed > c.Order_completed

我得到1;但我应该得到 2 的计数。

我不明白你是如何从你的查询中得到“1”的。我看到它产生“3”。所以,我认为你需要的是 COUNT(DISTINCT):

  SELECT COUNT(DISTINCT c.CustomerId)
  FROM Orders od JOIN
       Customers c
       ON od.OrderTypeID = c.OrderTypeID
  WHERE c.Order_completed < od.Completion_needed;