Oracle 기준으로 다음 SQL 중 오류가 발생하는 것을 모두 고른 … | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 1회
Oracle 기준으로 다음 SQL 중 오류가 발생하는 것을 모두 고른 것은?[매출]
| 지점 | 월 | 금액 |
|---|---|---|
| 강남 | 1 | 120 |
| 강남 | 2 | 80 |
| 잠실 | 1 | 60 |
| 판교 | 1 | 200 |
| 판교 | 2 | 30 |
㉠ SELECT 지점 FROM 매출 GROUP BY 지점 HAVING COUNT(*) >= 2; ㉡ SELECT 지점, SUM(금액) FROM 매출 WHERE SUM(금액) > 100 GROUP BY 지점; ㉢ SELECT 지점, 금액 FROM 매출 GROUP BY 지점; ㉣ SELECT COUNT(*) FROM 매출 HAVING COUNT(*) > 3;
1
㉠, ㉢, ㉣
2
㉡
3
㉡, ㉢
4
㉡, ㉣
해설
집계 함수는 그룹이 만들어진 뒤 평가되므로 WHERE 절에 쓸 수 없고, GROUP BY에 없는 일반 열은 집계 없이 SELECT 절에 올 수 없다.
따라서 WHERE에 SUM을 쓴 ㉡과 그룹 기준이 아닌 금액을 그대로 조회한 ㉢이 오류를 일으킨다.
- ㉠은 SELECT에 없는 집계를 HAVING에 써도 되므로 정상 실행된다.
- ㉣은 GROUP BY 없이 테이블 전체를 한 그룹으로 보고 HAVING을 적용한다.
- ㉡만 고르면 GROUP BY 열 제약을 어긴 ㉢을 놓친 것이다.
오류나 개정된 내용이 보이면 알려주세요