학습용 기출·복원자료 분류 확인SQLD · 2025년 58회 SQL 기본 및 활용 · 16번
온라인 쇼핑몰의 결제 정보를 관리하는 다음 [결제내역] 테이블이 있다. 2025년 12월의 월별 총 결제 건수를 집계하고자 할 때, 다음 중 실행 결과가 올바르게 나오지 않는 SQL 구문은?
[결제내역]
결제번호
결제일시
PAY001
2025-12-01 10:15:00
PAY002
2025-12-25 18:30:00
PAY003
2026-01-05 09:00:00
1
SELECT COUNT(*) FROM 결제내역 WHERE TO_CHAR(결제일시, 'YYYYMM') = '202512';
오답 이유‘SELECT COUNT(*) FROM 결제내역 WHERE TO_CHAR(결제일시, 'YYYYMM') = '202512';’ 구문은 ‘SELECT COUNT(*) FROM 결제내역 WHERE TRUNC(결제일시) = TO_DATE('2025-12', 'YYYY-MM');’과 실행 결과나 적용 조건이 다르다. TRUNC(결제일시)는 시분초를 제거한 12월의 여러 날짜를 반환하지만, TO_DATE('2025-12', 'YYYY-MM')은 2025년 12월 1일 00:00:00만을 의미한다. 그러므로 1일 이외의 데이터는 누락된다. 따라서 1번 보기 ‘SELECT COUNT(*) FROM 결제내역 WHERE TO_CHAR(결제일시, 'YYYYMM') = '202512';’의 적용 여부를 문제 조건과 대조해야 한다.
2
SELECT COUNT(*) FROM 결제내역 WHERE 결제일시 >= TO_DATE('20251201', 'YYYYMMDD') AND 결제일시 < TO_DATE('20260101', 'YYYYMMDD');
오답 이유‘SELECT COUNT(*) FROM 결제내역 WHERE 결제일시 >= TO_DATE('20251201', 'YYYYMMDD') AND 결제일시 < TO_DATE('20260101', 'YYYYMMDD');’ 구문은 ‘SELECT COUNT(*) FROM 결제내역 WHERE TRUNC(결제일시) = TO_DATE('2025-12', 'YYYY-MM');’과 실행 결과나 적용 조건이 다르다. TRUNC(결제일시)는 시분초를 제거한 12월의 여러 날짜를 반환하지만, TO_DATE('2025-12', 'YYYY-MM')은 2025년 12월 1일 00:00:00만을 의미한다. 그러므로 1일 이외의 데이터는 누락된다. 따라서 2번 보기 ‘SELECT COUNT(*) FROM 결제내역 WHERE 결제일시 >= TO_DATE('20251201', 'YYYYMMDD') AND 결제일시 < TO_DATE('20260101', 'YYYYMMDD');’의 적용 여부를 문제 조건과 대조해야 한다.
3
SELECT COUNT(*) FROM 결제내역 WHERE SUBSTR(TO_CHAR(결제일시, 'YYYY-MM-DD'), 1, 7) = '2025-12';
오답 이유‘SELECT COUNT(*) FROM 결제내역 WHERE SUBSTR(TO_CHAR(결제일시, 'YYYY-MM-DD'), 1, 7) = '2025-12';’ 구문은 ‘SELECT COUNT(*) FROM 결제내역 WHERE TRUNC(결제일시) = TO_DATE('2025-12', 'YYYY-MM');’과 실행 결과나 적용 조건이 다르다. TRUNC(결제일시)는 시분초를 제거한 12월의 여러 날짜를 반환하지만, TO_DATE('2025-12', 'YYYY-MM')은 2025년 12월 1일 00:00:00만을 의미한다. 그러므로 1일 이외의 데이터는 누락된다. 따라서 3번 보기 ‘SELECT COUNT(*) FROM 결제내역 WHERE SUBSTR(TO_CHAR(결제일시, 'YYYY-MM-DD'), 1, 7) = '2025-12';’의 적용 여부를 문제 조건과 대조해야 한다.
4
SELECT COUNT(*) FROM 결제내역 WHERE TRUNC(결제일시) = TO_DATE('2025-12', 'YYYY-MM');
정답 근거TRUNC(결제일시)는 시분초를 제거한 12월의 여러 날짜를 반환하지만, TO_DATE('2025-12', 'YYYY-MM')은 2025년 12월 1일 00:00:00만을 의미한다. 그러므로 1일 이외의 데이터는 누락된다. 따라서 4번 보기 ‘SELECT COUNT(*) FROM 결제내역 WHERE TRUNC(결제일시) = TO_DATE('2025-12', 'YYYY-MM');’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 4번
핵심 판단은 4번 ‘SELECT COUNT(*) FROM 결제내역 WHERE TRUNC(결제일시) = TO_DATE('2025-12', 'YYYY-MM');’입니다. TRUNC(결제일시)는 시분초를 제거한 12월의 여러 날짜를 반환하지만, TO_DATE('2025-12', 'YYYY-MM')은 2025년 12월 1일 00:00:00만을 의미한다. 그러므로 1일 이외의 데이터는 누락된다.