문제
다음 중 결과로 옳은 것은?
| COL1 | COL2 |
|---|---|
| 1 | 10 |
| 1 | 20 |
| 2 | 30 |
| 3 | 40 |
| 3 | 50 |
SQLSELECT MAX(COL2) KEEP(DENSE_RANK FIRST ORDER BY COL1) FROM TAB1;
① 10 ② 20 ③ 40 ④ 60
정답
2번
해설
정답: 2. COL1 기준 DENSE_RANK FIRST는 COL1이 가장 작은 1인 행들을 선택하고, 그중 COL2의 최댓값은 20이다.
오답 풀이
- 1번: COL1=1인 행 중 최솟값 10을 선택한 오류이다.
- 2번: COL1이 가장 작은 그룹의 COL2 최댓값이므로 옳다.
- 3번: COL1=3 그룹의 값으로 FIRST 조건에 맞지 않는다.
- 4번: 존재하지 않는 계산 결과이다.
보충 개념 KEEP(DENSE_RANK FIRST ORDER BY 컬럼)은 정렬 기준으로 첫 번째 순위 그룹을 대상으로 집계한다. 이후 MAX, MIN 같은 집계 함수가 해당 그룹에 적용된다.