본문 바로가기
자격증/SQLD

5.SQLD 기본 연습문제

by KJY 2021. 5. 2.

문제 1. PRODUCTS 테이블에서 LIST_PRICE의 가격이 평균 가격보다 큰 행(집합)의 PRODUCT_ID, PRODUCT_NAME, LIST_PRICE 컬럼을 구하는 SELECT문을 작성하고 PRODUCT_NAME으로 정렬하라.

  • 나의 풀이
SELECT 
    PRODUCT_ID
    , PRODUCT_NAME
    , LIST_PRICE
FROM PRODUCTS
WHERE LIST_PRICE >= (
                        SELECT AVG(LIST_PRICE)
                        FROM PRODUCT
)
ORDER BY PRODUCT_NAME;
  • 정답
SELECT A.PRODUCT_ID
    , A.PRODUCT_NAME
    , A.LIST_PRICE
FROM PRUDCTS A
WHERE A.LIST_PRICE > (
                        SELECT AVG(K.LIST_PRICE)
                        FROM PRODUCTS K
)
ORDER BY A.PRODUCT_NAME;

틀린점

  1. 큰 이라 = 없애기
  2. 꼭 틀린건 아니지만 별칭 줘서 가독성 높이기

 

문제 2. CUSTOMERS 테이블에서 CREDIT_LIMIT의 값이 가장 큰 10건의 행을 출력하라. (단, CUSTOMERS 테이블의 모든 칼럼을 출력하고 CREDIT_LIMIT이 동일하다면 NAME을 칼럼을 기준으로 오름차순 정렬로 출력하라.

 

  • 나의 풀이
SELECT A.* 
FROM CUSTOMERS A
WHERE A.CREDIT_LIMIT = (
                        SELECT MAX(B.CREDIT_LIMIT)
                        FROM CUSTOMERS B
)
ORDER BY NAME
ROWNUM = 10;
SELECT *
FROM (
    SELECT *
    FROM CUSTOMERS C
    ORDER BY CREDIT_LIMIT DESC, NAME
)
WHERE ROWNUM <= 10;
  1. CREDIT_LIMT이 같은게 아니니까 인라인 뷰를 사용해야 함.
  2. ROWNUM 은 WHERE 절에서 같이 사용해야 함.

'자격증 > SQLD' 카테고리의 다른 글

데이터 모델과 성능 연습문제  (0) 2021.05.10
1. 데이터모델링 연습문제  (0) 2021.05.05
8. 백업 및 복구 연습문제  (0) 2021.05.02
7. 테이블 설계 연습문제  (0) 2021.05.02
6. 트랜잭션 연습문제  (0) 2021.05.02

댓글