다음 <학생> 테이블을 이용하여 월별로 생일인 학생수를 표시… | [컴퓨터활용능력 1급 필기] 12년 3회차 기출문제 상세 페이지
1[컴퓨터활용능력 1급 필기] 12년 3회차
다음 <학생> 테이블을 이용하여 월별로 생일인 학생수를 표시하는 폼을 만들기 위한 레코드 원본으로 옳은 것은?
1
select month(*) as 월, sum(생년월일) as 생일자수 from 학생 group by month(생년월일)
2
select month(생년월일) as 월, count(*) as 생일자수 from 학생 group by month(생년월일)
3
select month(생년월일) as 월, count(*) as 생일자수 from 학생 group by 생년월일
4
select month(*) as 월, count(생년월일) as 생일자수 from 학생 group by 생년월일
해설
학생 테이블은 학번, 이름, 성별, 생년월일, 연락처로 이루어져 있으므로 생일이 든 날짜 필드는 생년월일이다. 월별 집계를 하려면 이 필드에서 month() 함수로 월만 뽑아내어 그 값으로 묶어야 한다.
month(*)처럼 함수 인수 자리에 별표를 쓰면 날짜 값이 전달되지 않아 성립하지 않는다. 또 인원수는 값을 더하는 sum이 아니라 레코드 개수를 세는 count로 구해야 하므로 count(*)가 맞다. sum(생년월일)은 날짜를 합산하는 무의미한 식이 된다.
group by 절도 select 절의 그룹 기준과 같은 month(생년월일)이어야 한다. group by 생년월일로 묶으면 같은 달이라도 날짜가 다르면 서로 다른 그룹이 되어 월별이 아니라 날짜별 집계가 나온다. 따라서 select month(생년월일) as 월, count(*) as 생일자수 from 학생 group by month(생년월일) 이 옳은 레코드 원본이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.
