본문 바로가기

DataBase(SQL)/DAY 25 _ 23.09.21

Sub Query

--Q. 가장 비싼 도서의 이름을 검색하시오

-- 강의
SELECT * FROM BOOK b1 WHERE b1.PRICE = 35000;

SELECT MAX(PRICE) FROM BOOK; 

--> 합치기
SELECT * FROM BOOK b1 WHERE b1.PRICE = (SELECT MAX(PRICE) FROM BOOK);

 

--> if) max(price)가 아니라 그냥 price면 스칼라가 아니라 벡터가 나오겠지?

--> 벡터를 비교하고싶으면 in을 쓰면 되겠지!
SELECT * FROM BOOK b1 WHERE b1.PRICE in (SELECT PRICE FROM BOOK);

 

--Q.도서를 구매한 경험이 있는 고객의 이름을 검색하시오

SELECT * FROM CUSTOMER c
INNER JOIN ORDERS o ON o.CUSTID = c.CUSTID; --> 3) 얘는 custid가 같으면 그냥 모으는거니까 선별하지는 않겠지,...
--> 숫자맞춰서 표만들기에 가깝고
--> CUSTID가 일치하는 고객과 주문 정보를 선택,
--> 한 명의 고객이 여러 주문을 했다면 해당 고객과 관련된 모든 주문이 결과에 포함됨


SELECT * FROM CUSTOMER c --> 2) select돼서 4줄만 나옴
WHERE c.CUSTID IN (SELECT o.CUSTID FROM ORDERS o); --> 1) 이줄에서 1234만 뽑혀나오고
--> 같은 숫자가 있으면 출력하기에 가까운 느낌?
--> 고객 中 주문을 한 고객들만을 선택!
SELECT DISTINCT name FROM CUSTOMER c
INNER JOIN ORDERS o ON o.CUSTID = c.CUSTID;

SELECT c.NAME FROM CUSTOMER c
WHERE c.CUSTID IN (SELECT o.CUSTID FROM ORDERS o);

 

 

'DataBase(SQL) > DAY 25 _ 23.09.21' 카테고리의 다른 글

Sub Query2  (0) 2023.09.21
Where~in / inner join  (0) 2023.09.21
Outer join  (0) 2023.09.21
Inner Join  (0) 2023.09.21
집계 함수 Quiz  (0) 2023.09.21