SQL CH 17 SQL Subquery

문병두·2024년 11월 12일

CH 17 SQL Subquery

하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문을 말한다. 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.

주의

• Subquery 는 괄호로 묶어서 사용
• 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
• subquery 에서는 order by 를 사용X

종류

• 스카라 서브쿼리 (Scalar Subquery) - SELECT 절에 사용
• 인라인 뷰 (Inline View) - FROM 절에 사용
• 중첩 서브쿼리 (Nested Subquery) - WHERE 절에 사용

스칼라 서브쿼리 (Scalar Subquery)

서울은평경찰서의 강도 검거 건수와 서울시 경찰서 전체의 평균 강도 검거 건수를 조회

인라인 뷰 (Inline View)

경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회

중첩 서브쿼리 (Nested Subquery) - WHERE 절에서 사용하는 서브쿼리.
• Single Row - 하나의 열을 검색하는 서브쿼리
• Multiple Row - 하나 이상의 열을 검색하는 서브쿼리
• Multiple Column - 하나 이상의 행을 검색하는 서브쿼리

Single Row

서브쿼리가 비교연산자( =, >, >=, <, <=, <>, !=)와 사용되는 경우,
서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다. (두개 이상인 경우 에러)

Multiple Row - IN

SNL 에 출연한 영화배우를 조회

EXISTS

범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회

oil_price 테이블에서 셀프주유의 평균가격과 SK에너지의 가장 비싼 가격을 Scalar Subquery 를 사용하여 조회

select max(가격) , (select avg(가격) from oil_price where 셀프='Y')
from oil_price
where 상표='SK에너지';

oil_price 테이블에서 상표별로 가장 비싼 가격과 상호를 Inline View 를 사용하여 조회하세요.

select o.상호,o.상표,s.max_price
from oil_price o , (select 상표,max(가격) max_price from oil_price group by 상표) s
where o.상표 =s.상표 and o.가격 = s.max_price;

평균가격 보다 높은 주유소 상호와 가격을 Nested Subquery 를 사용하여 조회하세요.

select 상호,가격
from oil_price
where 가격 > (select avg(가격) from oil_price);

refueling 테이블과 oil_price 테이블에서 10만원 이상 주유한 연예인 이름, 상호, 상표, 주유 금액, 가격을 Inline View 를 사용하여 조회하세요.

select r.이름,o.상호,o.상표,r.금액,o.가격
from oil_price o,
(select 이름,주유소,금액 from refueling where 금액 >= 100000)r
where o.상호 = r.주유소;

profile
데이터분석가

0개의 댓글