Oracle 기준으로 다음 결과를 얻기 위해 ㉠에 공통으로 들어갈 식으… | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 1회
Oracle 기준으로 다음 결과를 얻기 위해 ㉠에 공통으로 들어갈 식으로 옳은 것은?[주문]
| 주문번호 | 고객번호 | 주문일자 | 금액 |
|---|---|---|---|
| 1 | 10 | 2026-03-05 | 30000 |
| 2 | 11 | 2026-03-28 | 12000 |
| 3 | 10 | 2026-03-31 | 45000 |
| 4 | 12 | 2026-04-30 | 8000 |
| 5 | 11 | 2026-05-01 | 20000 |
| 6 | 13 | 2026-05-31 | 15000 |
SELECT ( ㉠ ) AS 주문월, COUNT(*) AS 건수, SUM(금액) AS 합계 FROM 주문 GROUP BY ( ㉠ ) ORDER BY 주문월;
| 주문월 | 건수 | 합계 |
|---|---|---|
| 2026-03 | 3 | 87000 |
| 2026-04 | 1 | 8000 |
| 2026-05 | 2 | 35000 |
1
TO_DATE(주문일자, 'MM')
2
TO_CHAR(주문일자, 'YYYY-MM')
3
EXTRACT(MONTH FROM 주문일자)
4
TRUNC(주문일자, 'MONTH')
해설
결과의 주문월이 '2026-03' 같은 문자열이므로 날짜를 지정 형식의 문자로 바꾸는 TO_CHAR(날짜, 'YYYY-MM')가 들어가야 한다.
같은 식으로 GROUP BY 하면 3월 3건·4월 1건·5월 2건이 월별로 묶이고 금액이 합산된다.
- EXTRACT(MONTH ...)는 연도 없이 3 같은 숫자 월만 돌려준다.
- TRUNC(날짜, 'MONTH')는 2026-03-01 같은 월초 날짜를 돌려준다.
- TO_DATE는 문자를 날짜로 바꾸는 함수라 결과가 문자열이 되지 않는다.
오류나 개정된 내용이 보이면 알려주세요