오라클 sql 질문.. 0 2 1,260

by cliffman [SQL Query] [2021.05.17 12:09:36]


캡처.PNG (9,609Bytes)

각 고객의 평균 주문금액보다 큰 금액의 주문 내역에 대해서 주문번호, 고객번호, 금액을 보이시오.

SELECT orderid, custid, saleprice

FROM Orders md

WHERE saleprice > (SELECT AVG(saleprice)

                          FROM Orders so

                          WHERE md.custid = so.custid);

 

저기 md.custid = so.custid의 뜻이 뭔지 모르겠어요 ㅠㅠ

왜 똑같은 테이블의 똑같은 속성에 = 을 붙이면 답이 나오는거죠? 

사진은 Orders 테이블입니다

 

 

 

by 마농 [2021.05.17 14:01:23]

같은 테이블이지만 다른 용도로 두번 사용된 것입니다.(Self Join)
md 는 출력 용도 이고.(메인)
so 는 비교 용도 입니다.(서브)
md 의 주문 내역 중에서
md의 고객과 같은 so 고객의 평균 금액 AVG(so.saleprice) 을 구해
md.saleprice 가 평균보다 큰지를 비교합니다. md.saleprice > AVG(so.saleprice)
서브쿼리 안으로 메인쿼리의 조건이 투입되는 형태의 서브쿼리로
상관서브쿼리라고 합니다.
메인 쿼리 결과 1건 마다 서브쿼리가 각각 수행됩니다.


by cliffman [2021.05.17 14:08:41]

감사합니다..!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입