책 내용 질문하기
2권 131페이지 16번
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
131
조회수
69
작성일
2018-09-27
작성자
탈퇴*원
첨부파일

이 문제 질문에 대합 답변 보니까

SELECT 상호, MAX(총액) AS 총액 FROM 거래내역;

위와 같이 MAX 함수 즉 그룹함수를 사용하려면 GROUP BY 절을 이용하여 그룹을 설정해야 한다고 하셨는데

이 문제 답은

Select 상호,총액

From 거래내역

Whree 총액 in(select max(총액) from 거래내역);으로

여기 답에서도 max가 사용되었는데 group으로 안묶고 사용해서

헷갈려서 질문드립니다 ㅠ

항상 그룹함수 쓸 때 그룹으로 묶어야하는지,

그렇다면 위의 문제는 어떤 경우인건지 설명부탁드립니다

답변
2018-09-28 14:25:56

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

그룹함수들이 group by절과 함께 사용되는 이유는 함수의 결과를 올바르게 활용하기 위해서 입니다.

즉, 릴레이션 스키마가 회사(부서, 이름, 고과점수) 라고 있을 때, 평균을 구하는 avg를 쓰기 위해서는 어떤 그룹을 지정해야 될까요?

'부서'를 그룹으로 지정하는게 맞습니다.

이과 같은 형태의 값을 도출하기 위해 group by절을 사용하는 것입니다.

group by절을 쓰지 않아도 SQL문이 수행되지 않는 것은 아닙니다.(적어도 MySQL에서는)

다만 결과는 회사의 모든 인원의 고과점수의 평균이 나올 뿐이지요.

말씀하신 정답의 사례가 그와 같습니다.

Select 상호,총액

From 거래내역

Where 총액 in(select max(총액) from 거래내역);

위와 같은 SQL문이 있을 때, select max(총액) from 거래내역 에서는 <거래내역> 테이블 전체에서 '총액' 속성의 max값을 구하는 것입니다. 굳이 말하자면 여기서 group은 테이블 전체가 되는 것이지요.

이와 같은 이유로 해당 select문에서는 group by절을 사용하지 않은 것입니다.

참고로 문제 16번의 <거래내역> 테이블에서 그룹함수와 group by절을 사용하는데 그룹함수를 사용하지 않는 조회 속성이 있는 경우를 예시로 들어보겠습니다.

select 상호, sum(금액) as 합계 from 거래내역;

위와 같이 작성되면 상호는 가장 첫 데이터인 '대명금속'이 나오고, 합계에는 총 합계 금액인 4180000이 나옵니다.

상호에 전혀 의미없는 데이터가 조회되죠.

행복한 하루되세요.^^

  • *
    2018-09-28 14:25:56

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

    그룹함수들이 group by절과 함께 사용되는 이유는 함수의 결과를 올바르게 활용하기 위해서 입니다.

    즉, 릴레이션 스키마가 회사(부서, 이름, 고과점수) 라고 있을 때, 평균을 구하는 avg를 쓰기 위해서는 어떤 그룹을 지정해야 될까요?

    '부서'를 그룹으로 지정하는게 맞습니다.

    이과 같은 형태의 값을 도출하기 위해 group by절을 사용하는 것입니다.

    group by절을 쓰지 않아도 SQL문이 수행되지 않는 것은 아닙니다.(적어도 MySQL에서는)

    다만 결과는 회사의 모든 인원의 고과점수의 평균이 나올 뿐이지요.

    말씀하신 정답의 사례가 그와 같습니다.

    Select 상호,총액

    From 거래내역

    Where 총액 in(select max(총액) from 거래내역);

    위와 같은 SQL문이 있을 때, select max(총액) from 거래내역 에서는 <거래내역> 테이블 전체에서 '총액' 속성의 max값을 구하는 것입니다. 굳이 말하자면 여기서 group은 테이블 전체가 되는 것이지요.

    이와 같은 이유로 해당 select문에서는 group by절을 사용하지 않은 것입니다.

    참고로 문제 16번의 <거래내역> 테이블에서 그룹함수와 group by절을 사용하는데 그룹함수를 사용하지 않는 조회 속성이 있는 경우를 예시로 들어보겠습니다.

    select 상호, sum(금액) as 합계 from 거래내역;

    위와 같이 작성되면 상호는 가장 첫 데이터인 '대명금속'이 나오고, 합계에는 총 합계 금액인 4180000이 나옵니다.

    상호에 전혀 의미없는 데이터가 조회되죠.

    행복한 하루되세요.^^

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