서브쿼리(subquery)

기록하는 용도·2022년 9월 13일
0

서브쿼리

SubQuery : 서브쿼리, 부쿼리, 하위쿼리로 SQL내의 SQL을 말한다.

다양한 예제를 통해서 서브쿼리를 접해보자.

예제1

1. 테이블 생성

CREATE TABLE item(
	id NUMBER PRIMARY KEY,
	name VARCHAR2(100) NOT NULL,
	maker VARCHAR2(100) NOT NULL,
	price NUMBER NOT NULL
)

2. 시퀀스를 생성하고 정보 삽입

CREATE SEQUENCE  item_seq;

INSERT INTO item(id,name,maker, price) VALUES(item_seq.nextval,'불닭볶음면', '삼양', 1500);
INSERT INTO item(id,name,maker, price) VALUES(item_seq.nextval,'진라면', '오뚜기', 1100);
INSERT INTO item(id,name,maker, price) VALUES(item_seq.nextval,'테라', '하이트진로', 1800);
INSERT INTO item(id,name,maker, price) VALUES(item_seq.nextval,'참이슬후레쉬', '하이트진로', 1300);
INSERT INTO item(id,name,maker, price) VALUES(item_seq.nextval,'열라면', '오뚜기', 1300);

3. 전체 정보 조회

SELECT * FROM item;



예제1

item table에 저장된 item 정보 중에서 최고가의 item name과 maker, price를 조회해라.

1-1. item table에서 가격의 최대값을 구하기

SELECT MAX(PRICE) FROM ITEM;



1-2. 1-1의 결과로 최대값이 1800임을 알았기때문에 가격이 최대인 item의 정보를 조회한다.

SELECT name,maker,price FROM item WHERE price=1800;



1-3. 위의 두 SQL을 SubQuery를 이용해 한번에 실행하여 조회하도록 할 수 있다.

SELECT name,maker,price FROM item WHERE price=(SELECT MAX(PRICE) FROM ITEM);




예제2.

전체 아이템 상품 중 상품의 평균가보다 높은 상품들 중 가장 낮은 가격을 가진 상품의 id, name,maker,price를 조회하라

2-1. 상품의 평균가

SELECT AVG(PRICE) FROM ITEM



2-2.평균가보다 높은 상품들 중 가장 낮은 가격은?

SELECT MIN(PRICE) FROM ITEM WHERE PRICE>(SELECT AVG(PRICE) FROM ITEM)



2-3

SELECT * FROM ITEM 
WHERE PRICE= (
	SELECT MIN(PRICE) FROM ITEM 
	WHERE PRICE>(SELECT AVG(PRICE) FROM ITEM)
)




예제3

maker가 하이트진로인 item 중 가장 낮은 price의 item name과 price를 조회

3-1. maker가 하이트진로인 item 중에서 가격의 최소값을 조회

SELECT MIN(PRICE) FROM ITEM  WHERE maker='하이트진로';



3-2. maker가 하이트 진로인 정보중 가격을 조회

SELECT PRICE FROM ITEM WHERE MAKER='하이트진로';



3-3.

SELECT name,price FROM ITEM 
WHERE MAKER='하이트진로' AND PRICE= (
	SELECT MIN(PRICE) FROM ITEM 
	WHERE maker='하이트진로'
)


0개의 댓글