문제
다음 SQL에서 발생하는 오류로 가장 적절한 것은?
[ORDERS] CUSTOMER_ID, ORDER_DATE, AMOUNT 테이블에서
SQLSELECT CUSTOMER_ID, ORDER_DATE, SUM(AMOUNT) FROM ORDERS WHERE SUM(AMOUNT) > 1000 GROUP BY CUSTOMER_ID;
① SELECT절의 ORDER_DATE가 GROUP BY절에 포함되지 않음 ② WHERE절에서 집계함수 SUM을 사용함 ③ 위 두 오류가 모두 발생함 ④ FROM절의 테이블명이 잘못됨
정답
3번
해설
이 SQL에서는 두 가지 오류가 동시에 발생한다. ① SELECT절에 ORDER_DATE가 있는데 GROUP BY절에는 CUSTOMER_ID만 있어서 GROUP BY 규칙 위반이다. ② WHERE절에 집계함수 SUM(AMOUNT)를 사용했는데, 집계함수는 WHERE절이 아닌 HAVING절에서 사용해야 한다. 따라서 두 오류가 모두 존재하므로 ③번이 정답이다. ④번의 테이블명 ORDERS는 올바르다.