2017-09-21 16 views
3

SUM()の結果に基づいて2つのテーブルを結合することに関連する小さな問題があります。集計関数の結果に基づいてテーブルを結合する

Customers Table 

CUSTOMERID  NAME AGE ADDRESS  PHONE 
     1  AA 33 Some Address 123654789 
     2  BB 35 Some Address 123654789 
     3  CC 55 Some Address 987654789 
     4  DD 55 Some Address 987654789 
     5  EE 25 Some Address 365754789 
     6  FF 20 Some Address 365754789 


Orders Table 

    ORDERID CUSTOMERID ORDERAMOUNT 
    C12335 3   50000 
    F12336 3   12000 
    C12337 3   5000 
    C12338 1   3700 
    C12339 2   1100 

私はWHERE句の後SUM()などの集計関数を使用することはできませんから、私は午前、合計ORDERAMOUNTのただし以上50000

ある顧客の注文の合計、customerID,Name,Addressを表示ここのトラブル。

SELECT C.NAME,C.ADDRESS,O.CUSTOMERID 
FROM CUSTOMERS C 
INNER JOIN 
(
    SELECT CUSTOMERID,SUM(ORDERAMOUNT) FROM ORDERS GROUP BY CUSTOMERID 
)O ON C.CUSTOMERID = O.CUSTOMERID; 

私が書くことができる最も進歩的な作業のクエリは、このだったし、ORDERAMOUNTの和の条件は以上50000

で評価しない私もその状態を評価することができます方法はありますか?助けをいただければ幸いです。事前に感謝:)

答えて

4

あなたは、サブクエリせずに、単一のクエリでこれを行うことができます:それは後の凝集をフィルタリング以外

select c.name, c.address, c.customerid, sum(o.orderamount) 
from customers c join 
    orders o 
    on o.customerid = c.customerid 
group by c.name, c.address, c.customerid 
having sum(o.orderamount) > 50000; 

havingは、whereのようなものです。 having句で集計関数を使用できます。

+0

ありがとうゴードン。それは私の問題を解決:) –

関連する問題