728x90
매일 SQLD 기출 문제 풀기 챌린지
문제28.
아래의 SQL에 대한 결과를 적으시오.
[TAB1]
COL1 | COL2 | COL3 | COL4 |
1 | 2 | 200 | 20 |
2 | 3 | 240 | 10 |
3 | 4 | 100 | 20 |
4 | 5 | 230 | 20 |
5 | 6 | 300 | 20 |
6 | 7 | 400 | 10 |
[ SQL ]
SELECT COL2, COL1
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY COL4 ORDER BY COL3 DESC) RN,
COL1, COL2
FROM TAB1
WHERE COL1 <> 5 AND COL4 > 10)
WHERE RN = 1;
답 : ?
해설해보기
SQL을 풀기 위해선
IN LINE VIEW를 우선적으로 풀어야한다.
1. IN LINE VIEW
테이블 TAB1 에서 데이터를 출력하는데, COL1, COL2와 RN을 출력합니다.
이때 RN은 COL4를 기준으로 PARTITIONING 된 상태에서 COL3을 기준으로 DESC하게 정렬된 ROW_NUMBER로 생성된 컬럼입니다.
단, COL1은 5가 아니며, COL4는 10보다 작은 조건을 충족하는 데이터만 출력합니다.
2. MAIN QUERY
IN LINE VIEW의 결과를 기반으로 COL2와 COL1을 출력하는데, RN = 1인 데이터만 출력해야합니다.
RN은 COL3을 기준으로 DESC하게 정렬된 결과를 기반으로 생성 되어 있기 때문에
COL4가 20인 데이터들 중 COL3이 가장 큰 행의 값이 정답입니다.
단, COL1이 5가 아닌 조건이 존재하기 때문에
정답은 5와 4 입니다.
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 30> ntile 함수에 대한 기출문제 (0) | 2024.03.30 |
---|---|
<SQLD 29> reporting 함수에 대한 기출문제 (0) | 2024.03.29 |
<SQLD 27> grouping sets 에 대한 기출문제 (0) | 2024.03.27 |
<SQLD 26> outer 조인에 대한 기출문제 (2) | 2024.03.26 |
<SQLD 25> Like 연산자에 대한 기출문제 (0) | 2024.03.25 |