2017-09-21 4 views
3

SUM()의 결과를 기반으로 두 테이블 조인과 관련된 작은 문제가 있습니다. 다음은 내 테이블입니다.집계 함수 결과를 기반으로 테이블 조인

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 

내가 customerID,Name,Address 표시 나는 WHERE 절 후 SUM() 같은 집계 함수를 사용할 수 없기 때문에, 합계는 고객이 누구의 합계 ORDERAMOUNT의의 주문, 그러나 이상의 50000

, 난에서 오전 여기서 문제가 생겼어. 내가 쓸 수

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; 

havingwhere 같다. having 절에서 집계 함수를 사용할 수 있습니다.

+0

고든에게 감사드립니다. 그게 내 문제를 해결 :) –