모두CBT

다음과 같은 [회비납부] 테이블을 이용하여 월별로 납부금액의 합계를 계… | [컴퓨터활용능력 1급 필기] 13년 1회차 기출문제 상세 페이지

1[컴퓨터활용능력 1급 필기] 13년 1회차
다음과 같은 [회비납부] 테이블을 이용하여 월별로 납부금액의 합계를 계산하는 SQL 문으로 옳은 것은?
회비납부
필드 이름데이터 형식
납부일 (기본 키)날짜/시간
회원번호 (기본 키)텍스트
납부금액통화
회비납부
납부일회원번호납부금액
2013-01-07200001₩25,000
2013-01-21200002₩25,000
2013-01-30200003₩30,000
2013-02-04200001₩25,000
2013-02-06200002₩25,000
2013-02-13200003₩30,000
2013-02-26201304₩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원처럼 월 단위로 더해진다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.