문제 : SELECT 소속도시, AVG(매출액) FROM 지점정보 WHERE 매출액>1000 GROUP BY 소속도시 HAVING COUNT(*)>=3
1번보기에서 "WHERE절의 조건에 의해 해당 도시의 지점들의 매출액 평균이 1000이하인 경우는 출력에서 제외된다."라고 쓰여있고 맞는 보기라고 되어있는데 여기서 매출액 평균이 아니라 그냥 매출액 아닌가요? "WHERE AVG(매출액)>1000"이 매출액 평균 1000초과하는 문장같아요. 매출액 평균은 최종으로 출력되는 릴레이션의 속성을 표현하기 위함이라고 생각합니다.
안녕하세요 길벗 수험서 운영팀입니다.
해당 설명은 코드가 실행된 이후의 결과에 대해 설명하고 있습니다.
보기의 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이하인 경우는 출력될 수 없다는 것을 의미합니다.
행복한 하루 되세요 :)