책 내용 질문하기
질문이요
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
131
조회수
36
작성일
2018-09-28
작성자
탈퇴*원
첨부파일
WHERE 총액 IN(SELECT MAX(총액) FROM 거래내역); 이거를 GROUP BY로 써서 HAVING 총액=MAX(총액) 으로 쓰는게 가능한가요
답변
2018-10-01 17:55:45

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

불가능합니다.

예를 들어 회원님의 말씀처럼

select 상호, 총액
from 거래내역
group by 상호
having 총액=max(총액);

이렇게 작성한 경우, <거래내역> 테이블의 모든 상호와 총액이 출력되게 됩니다.

group by 절에 속하는 having에서 사용한 max(총액)는 group으로 묶인 레코드들의 max를 구하는 식으로 가동되기 때문입니다.

즉 위와 같이 '상호' 속성으로 그룹을 정한 경우 각 상호들 대명금속, 정금강업 등등 의 각 그룹들 안에서의 max를 구하게 되죠.

(이 경우에는 하나의 레코드밖에 없어 모두가 max값이 됩니다.)

아래와 같은 경우를 생각해보시면 될 것 같네요.

SELECT 상호, 총액, max(총액)
FROM 거래내역
group by 상호;

위 SQL문을 실행시켰을 때 총액과 max(총액)이 동일하게 찍히게 되는 것과 같습니다.

행복한 하루되세요.^^

  • *
    2018-10-01 17:55:45

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

    불가능합니다.

    예를 들어 회원님의 말씀처럼

    select 상호, 총액
    from 거래내역
    group by 상호
    having 총액=max(총액);

    이렇게 작성한 경우, <거래내역> 테이블의 모든 상호와 총액이 출력되게 됩니다.

    group by 절에 속하는 having에서 사용한 max(총액)는 group으로 묶인 레코드들의 max를 구하는 식으로 가동되기 때문입니다.

    즉 위와 같이 '상호' 속성으로 그룹을 정한 경우 각 상호들 대명금속, 정금강업 등등 의 각 그룹들 안에서의 max를 구하게 되죠.

    (이 경우에는 하나의 레코드밖에 없어 모두가 max값이 됩니다.)

    아래와 같은 경우를 생각해보시면 될 것 같네요.

    SELECT 상호, 총액, max(총액)
    FROM 거래내역
    group by 상호;

    위 SQL문을 실행시켰을 때 총액과 max(총액)이 동일하게 찍히게 되는 것과 같습니다.

    행복한 하루되세요.^^

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