2017-06-04 13 views
0

これはなぜ動作していないのかわかりません。SQL:他のテーブルのWHEREに基づいて1つのテーブルのカウント値

私は2つの単純なテーブルがあります。

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% 

私は非注文を完了しているどのように多くの顧客を計算したい、CustomersテーブルのOrder_completedは(してくださいではないお客様ができることをOrdersテーブル内Completion_needed未満であります複数の注文タイプがあります)。

これは私のクエリですが、私は間違って結果を得る:私は1を取得

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 

を。しかし、私は2のカウントを取得する必要があります。

+0

ここで完成していない注文がどういう意味ですか? –

+0

それらは本当のテーブルですか?最初にCustomerIDが表示されないので、結合はどのように機能しますか? – dman2306

+0

@ dman2306申し訳ありませんが、簡略化したときに入力が間に合わなかったので、OrderTypeIDに結合する必要があります – jeangelj

答えて

1

私はどのようにあなたのクエリから "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; 
+0

ありがとう私がグループを行う場合、またはグループを必要とするのか? – jeangelj

+0

@ jeangelj。 。 。 GROUP BYは間違ってそこに残っていた。 –

関連する問題