SQL. SUB QUERY
서브쿼리 : 메인 SELECT 구문 안에 다른 SELECT문 ▷ 조건문의 형태로 이해하자
- PRODUCTS 테이블에서 LIST_PRICE가 최대인 행에서 PRODUCT_ID, PRODUCT_NAME, LIST_PRICE를 찾기
SELECT
PRODUCT_ID,
PRODUCT_NAME,
LIST_PRICE
FROM PRODUCTS
WHERE LIST_PRICE = (SELECT
MAX(LIST_PRICE)
FROM PRODUCTS);
- PRODUCTS 테이블에서 RPODUCT_NAME, LIST_PRICE, AVG_LIST_PRICE를 구하고 PRODUCT_NAME 기준 오름차순 정렬하라. 단, AVG_LIST_PRICE는 같은 CATEGORY_ID를 가진 LIST_PRICE의 평균값이다.
SELECT
A.PRODUCT_NAME,
A.LIST_PRICE,
(
SELECT
AVG(LIST_PRICE)
FROM PRODUCTS B
WHERE B.CATEGORY_ID = A.CATEGORY_ID
) AVG_LIST_PRICE
FROM PRODUCTS A
ORDER BY A.PRODUCT_NAME;
위와같이 SELECT절 안의 서브쿼리를 스칼라 서브쿼리라고 한다.
- ORDER_ITEMS 테이블에서 ORDER_ID, ORDER_VALUE를 구하여 상위 10개만 표시하라. ORDER_VALUE는 QUANTITY * UNIT_PRICE로 매출액을 나타낸다.
SELECT
ORDER_ID,
ORDER_VALUE
FROM
(
SELECT
ORDER_ID,
SUM(QUANTITY * UNIT_PRICE) ORDER_VALUE
FROM
ORDER_ITEMS
GROUP BY ORDER_ID
ORDER BY ORDER_VALUE DESC
)
WHERE
ROWNUM <= 10 ;
FROM절 안에 있는 SELECT문을 통해 VIEW가 생성됨 -> VIEW에서 ORDER_ID와 ORDER_VALUE중 10개만 표시함 (인라인 뷰 서브쿼리)
- PRODUCT 테이블에서 LIST_PRICE의 가격이 평균 가격보다 큰 행(집합)의 PRODUCT_ID, PRODUCT_NAME, lIST_PRICE 컬럼을 구하는 SELECT문을 작성하고 P_NAME으로 정렬
SELECT
A.PRODUCT_ID ,
A.PRODUCT_NAME ,
A.LIST_PRICE
FROM PRODUCTS A
WHERE LIST_PRICE > (SELECT
AVG(K.LIST_PRICE)
FROM PRODUCTS K)
ORDER BY PRODUCT_NAME ;
- CUSTOMERS 테이블에서 CREDIT_LIMIT의 값이 가장 큰 10건의 행을 출력하라 (단, CUSTOMERS 테이블의 모든 열을 출력하고 CREDIT_LIMIT이 동일하다면 NAME 칼럼을 기준으로 오름차순 정렬
SELECT
*
FROM (SELECT *
FROM CUSTOMERS
ORDER BY CREDIT_LIMIT DESC, NAME)
WHERE ROWNUM <= 10;
Author And Source
이 문제에 관하여(SQL. SUB QUERY), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@funco247/SQL.-SUB-QUERY저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)