728x90
<서브 쿼리>
- 쿼리 안에 쿼리 작성
- SELECT *, (SELECT * FROM...) FROM... WHERE ... (SELECT * FROM...)
- 비상관 서브커리: 연계되지 않고 독립적으로 반환되는 서브쿼리
SELECT categoryid, categoryname, DESCRIPTION,
(SELECT productname FROM products WHERE `ProductID` = 1)
FROM categories;
>>categories의 categoryid, categoryname, DESCRIPTION를 출력하고,
products의 ProductID가 1인 경우, productname를 출력해라.
<결과>
SELECT * FROM products
WHERE price < (SELECT AVG(`Price`) FROM products)
ORDER BY `Price` DESC;
>> products에서 products의 Price의 평균이 price보다 큰 경우
Price를 내림차순해서 출력하시오.
<결과>
SELECT categoryid, categoryname, DESCRIPTION
FROM categories
WHERE `CategoryID` IN (SELECT `CategoryID` FROM products WHERE `Price` > 50);
>> categories에서 products의 Price가 50보다 큰 항목 중 CategoryID가 있으면
categoryid, categoryname, DESCRIPTION를 출력해라.
<결과>
<ALL / ANY>
- ALL: 서브쿼리의 모든 결과에 대해서
- ANY: 서브쿼리의 하나 이상의 결과에 대해서
SELECT * FROM products
WHERE `Price` > ALL (SELECT `Price` FROM products WHERE `CategoryID` = 2);
>> products의 CategoryID가 2인 항목의 Price를 출력한 모든 결과가
Price보다 작은 것 중, products의 모든 항목을 출력해라.
<결과>
SELECT categoryid, categoryname, DESCRIPTION
FROM categories
WHERE `CategoryID` = ANY (SELECT `CategoryID` FROM products WHERE `Price` > 50);
>> products의 Price가 50보다 큰 항목의 CategoryID를 출력한 모든 결과 중
하나라도 CategoryID와 같으면
categories의 categoryid, categoryname, DESCRIPTION를 출력해라
<결과>
2. 상관 서브커리: 부모 명령과 자식인 서브쿼리가 특정 관계를 맺는 것
SELECT
productid, productname,
(SELECT categoryname FROM categories C WHERE C.`CategoryID` = P.`CategoryID`)
FROM products P
WHERE `Price` > 100;
P=products
C=categories
>>products에서 Price가 100보다 큰 항목 중 productid, productname,
categoryname와 categories의 CategoryID가 같은 경우를 출력하라.
<결과>
SELECT
categoryid, categoryname,
-- 해당 카테고리에서 가장 비싼 상품의 가격,
(SELECT MAX(price) FROM products P WHERE P.`CategoryID` = C.categoryid) AS MaximumPrice,
-- 해당 카테고리의 평균 상품 가격
(SELECT AVG(price) FROM products P WHERE P.`CategoryID` = C.categoryid) AS AveragePrice
FROM categories C;
P=products
C=categories
>> categories의 categoryid, categoryname와
products의 P의CategoryID와 C의 categoryid가 같은 항목 중 가장 높은 가격을 MaximumPrice로,
products의 P의CategoryID와 C의 categoryid가 같은 항목 중 가격의 평균을 AveragePrice로 출력하시오.
<결과>
'프로그래밍 언어 > SQL' 카테고리의 다른 글
데이터베이스 언어 정리 (DDL / DML / DCL) (2) - DML / DCL 편 (0) | 2024.02.04 |
---|---|
데이터베이스 언어 정리 (DDL / DML / DCL) (1) - DDL 편 (0) | 2024.02.03 |
SQL 함수 간단 실습 :: JOIN (내부 조인, 외부 조인, 셀프 조인) (0) | 2024.01.25 |
SQL 함수 간단 실습 :: 시간/날짜 관련 함수 (0) | 2024.01.24 |
SQL 함수 간단 실습 :: 문자열 관련 함수 (0) | 2024.01.23 |