[SQLP실기풀이]6장 고급SQL튜닝(1)-소트튜닝18번

Yu River·2022년 7월 2일
0

SQLP실기연습

목록 보기
41/44

문제 링크 : https://velog.io/@yooha9621/SQLP실기문제-소트튜닝18번

문제

2021년 3월에 변경된 상품 중에서 3월의 최종 상품변경이력의 변경구분코드가 'C2'인 상품의 상품번호와 변경일시를 출력하는 최적 SQL을 작성하세요.

⭐️ 쿼리 작성 포인트

  1. ⭐️변경구분코드가 'C2'인 상품중에서 TOP1을 추출하는 게 아니라!!!⭐️
    ⭐️상품별 최종 변경 구분 코드 중에 'C2'인 것⭐️을 찾아야 한다.
  2. 인덱스 정렬을 사용해 TOP 1개만 추출하는 부분범위 처리를 활용한다.

튜닝한 SQL문

SQL > SELECT 변경일시 AS 최종변경일시 , 상품번호
FROM (
  SELECT 변경일시 , 변경구분코드 , 상품번호
  ,ROW_NUMBER() OVER(PARTITION BY 상품번호 ORDER BY 변경일시 DESC) RNUM
  FROM 상품변경이력
  WHERE 변경일시 >= TO_DATE('20220301','YYYYMMDD')
  AND 변경일시 < TO_DATE('20220401','YYYYMMDD')
)
WHERE RNUM =1
AND 변경구분코드 = 'C2';

🍎 정리

  • 상품별 최종 변경일시와 변경 구분코드를 먼저 추출한 뒤 그 중에서 변경 구분코드가 'C2'인 것을 추출한다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글