책 내용 질문하기
104쪽의 9번문제 보기들이 이해가 안돼요.
도서
2018 시나공 정보처리기사 필기
페이지
104
조회수
649
작성일
2019-02-01
작성자
탈퇴*원
첨부파일

문제 : SELECT 소속도시, AVG(매출액) FROM 지점정보 WHERE 매출액>1000 GROUP BY 소속도시 HAVING COUNT(*)>=3

1번보기에서 "WHERE절의 조건에 의해 해당 도시의 지점들의 매출액 평균이 1000이하인 경우는 출력에서 제외된다."라고 쓰여있고 맞는 보기라고 되어있는데 여기서 매출액 평균이 아니라 그냥 매출액 아닌가요? "WHERE AVG(매출액)>1000"이 매출액 평균 1000초과하는 문장같아요. 매출액 평균은 최종으로 출력되는 릴레이션의 속성을 표현하기 위함이라고 생각합니다.

 

답변
2019-02-07 13:40:58

안녕하세요 길벗 수험서 운영팀입니다.

 

해당 설명은 코드가 실행된 이후의 결과에 대해 설명하고 있습니다.

 

보기의 SQL코드는 <지점정보> 테이블에서 1000을 초과하는 매출액을 가진 도시들을 추출한 뒤(where절),

추출된 데이터에서 동일한 도시가 3개 이상인 도시들을 묶어(group by, having절) 해당 도시의 이름과 매출액 평균을 출력하는 select문입니다.

 

이 것이 실행된다고 가정했을 때 매출액이 1000을 초과하는 데이터만을 갖고 도시와 평균을 출력하기 때문에, 매출액 평균(avg(매출액))은 1000이하가 나올 수 없게 됩니다.

 

예를들어, <지점정보> 테이블의 '소속도시', '매출액' 데이터가

(서울, 0),

(서울, 0), 

(서울, 0),

(서울, 1200), 

(서울, 1400), 

(서울, 1600)

 

과 같이 데이터가 들어가 있다면 결과는 (서울, 1400)이 나오게 되죠.

(1200, 1400, 1600의 평균)

 

즉, 보기 1번은 SQL문 자체가 아닌 SQL문을 실행했을 때의 결과에서 '매출액 평균'이 1000이하인 경우는 출력될 수 없다는 것을 의미합니다.

 

행복한 하루 되세요 :)

  • 관리자
    2019-02-07 13:40:58

    안녕하세요 길벗 수험서 운영팀입니다.

     

    해당 설명은 코드가 실행된 이후의 결과에 대해 설명하고 있습니다.

     

    보기의 SQL코드는 <지점정보> 테이블에서 1000을 초과하는 매출액을 가진 도시들을 추출한 뒤(where절),

    추출된 데이터에서 동일한 도시가 3개 이상인 도시들을 묶어(group by, having절) 해당 도시의 이름과 매출액 평균을 출력하는 select문입니다.

     

    이 것이 실행된다고 가정했을 때 매출액이 1000을 초과하는 데이터만을 갖고 도시와 평균을 출력하기 때문에, 매출액 평균(avg(매출액))은 1000이하가 나올 수 없게 됩니다.

     

    예를들어, <지점정보> 테이블의 '소속도시', '매출액' 데이터가

    (서울, 0),

    (서울, 0), 

    (서울, 0),

    (서울, 1200), 

    (서울, 1400), 

    (서울, 1600)

     

    과 같이 데이터가 들어가 있다면 결과는 (서울, 1400)이 나오게 되죠.

    (1200, 1400, 1600의 평균)

     

    즉, 보기 1번은 SQL문 자체가 아닌 SQL문을 실행했을 때의 결과에서 '매출액 평균'이 1000이하인 경우는 출력될 수 없다는 것을 의미합니다.

     

    행복한 하루 되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.