문제
다음 SQL 구문에서 논리적 오류가 발생하는 경우는?
① SELECT * FROM 고객 WHERE 나이 BETWEEN 20 AND 30 AND 지역 = '서울' ② SELECT 부서명, AVG(급여) FROM 직원 GROUP BY 부서명 HAVING COUNT(*) > 5 ③ SELECT * FROM 주문 WHERE 주문일자 > GETDATE() AND 상태 = '대기중' ④ SELECT 고객명, 주소 FROM 고객 WHERE 고객번호 IN (SELECT DISTINCT 고객번호 FROM 주문)
정답
3번
해설
③번은 논리적 오류를 포함한다. GETDATE()는 현재 시스템 날짜를 반환하는데, 주문일자가 현재보다 미래인 주문을 조회하는 것은 일반적으로 불가능하다(미래 주문은 존재하지 않음). ①번은 나이와 지역 조건을 동시에 만족하는 정상적인 조회, ②번은 부서별 평균 급여에서 인원수 조건을 추가한 정상적인 집계, ④번은 주문이 있는 고객만 조회하는 정상적인 서브쿼리 사용이다.