문제
주어진 결과를 출력하는 쿼리로 옳은 것은?
| COL1 | COL2 |
|---|---|
| A | 10 |
| A | 20 |
| B | 20 |
| C | 30 |
<결과>
| COUNT() |
|---|
| 2 |
① SELECT COUNT(DISTINCT COL1) FROM TAB1 WHERE COL2 <= 20 ② SELECT COUNT(COL1) FROM TAB1 WHERE COL2 <= 20 ③ SELECT COUNT(COL1) FROM TAB1 WHERE COL2 <= 20 GROUP BY COL1 ④ SELECT COUNT(COL1) FROM TAB1 WHERE COL2 < 30 GROUP BY COL1
정답
1번
해설
정답: 1. COL2 <= 20인 행의 COL1은 A, A, B이고, DISTINCT COL1의 개수는 A와 B로 2개이다.
오답 풀이
- 1번: 중복을 제거한 COL1 개수가 2이므로 옳다.
- 2번: 조건에 맞는 행 수는 3건이다.
- 3번: GROUP BY COL1로 인해 A 그룹 2, B 그룹 1처럼 여러 행이 나올 수 있다.
- 4번: GROUP BY COL1로 인해 단일 결과 2만 반환된다고 보기 어렵다.
보충 개념 COUNT(DISTINCT 컬럼)은 중복을 제거한 값의 개수를 센다. GROUP BY를 사용하면 그룹별 결과가 반환되므로 단일 집계 결과와 다를 수 있다.