다음과 같은 [회비납부] 테이블을 이용하여 월별로 납부금액의 합계를 계… | [컴퓨터활용능력 1급 필기] 13년 1회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 13년 1회차
다음과 같은 [회비납부] 테이블을 이용하여 월별로 납부금액의 합계를 계산하는 SQL 문으로 옳은 것은?
| 회비납부 | |
|---|---|
| 필드 이름 | 데이터 형식 |
| 납부일 (기본 키) | 날짜/시간 |
| 회원번호 (기본 키) | 텍스트 |
| 납부금액 | 통화 |
| 회비납부 | ||
|---|---|---|
| 납부일 | 회원번호 | 납부금액 |
| 2013-01-07 | 200001 | ₩25,000 |
| 2013-01-21 | 200002 | ₩25,000 |
| 2013-01-30 | 200003 | ₩30,000 |
| 2013-02-04 | 200001 | ₩25,000 |
| 2013-02-06 | 200002 | ₩25,000 |
| 2013-02-13 | 200003 | ₩30,000 |
| 2013-02-26 | 201304 | ₩50,000 |
1
select month(납부일) as 월, sum(납부금액) from 회비납부 where year(납부일) = year(date()) group by 납부일
2
select month(납부일) as 월, sum(납부금액) from 회비납부 where year(납부일) = year(date()) group by month(납부일)
3
select month(납부일) as 월, sum(납부금액) from 회비납부 group by 납부일 where year(납부일) = year(date())
4
select month(납부일) as 월, sum(납부금액) from 회비납부 group by month(납부일) where year(납부일) = year(date())
해설
[회비납부] 테이블은 납부일(날짜/시간)·회원번호(텍스트)·납부금액(통화)으로 이뤄져 있고, 데이터에는 2013-01-07부터 2013-02-26까지의 납부 기록이 들어 있다. 월별 합계를 구하려면 날짜에서 월만 뽑아 그 값으로 묶어야 한다.
SQL 절의 순서는 SELECT → FROM → WHERE → GROUP BY로 정해져 있다. 그룹화한 뒤에 WHERE를 쓴 문장은 구문 오류라 아예 실행되지 않으므로, 해당 연도만 걸러 내는 where year(납부일) = year(date())는 반드시 group by 앞에 와야 한다.
그룹 기준도 month(납부일)이어야 한다. 납부일 자체로 묶으면 2013-01-07, 2013-01-21, 2013-01-30이 날짜별로 따로 집계되어 월 합계가 되지 않는다. month(납부일)로 묶어야 1월 80,000원, 2월 130,000원처럼 월 단위로 더해진다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.