책 내용 질문하기
2권 134P 17번 문제
도서
2021 시나공 정보처리산업기사 실기
페이지
134
조회수
482
작성일
2021-04-11
작성자
탈퇴*원
첨부파일

WHERE 절에 MAX를 사용 못해서

 

SELECT 상호,총액

 

FROM 거래내역

 

GROUP BY 총액

HAVING MAX(총액);

 

 

그룹바이를 사용하면 틀리나요 만약 사용할수 있다면 올바르게 그룹절을 작성했는지 궁금합니다. 틀렸다면 올바른 작성문도 알려주시면 감사하겠습니다. 

답변
2021-04-13 11:29:55

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

 

having은 각 그룹에 적용될 조건을 적는 자리입니다.

결과로 '참' 또는 '거짓'이 나와야 하죠.

 

때문에 적는다면 having max(총액)=총액 이 되는데 문제는, 총액의 값이 모두 달라 각 튜플마다 그룹이 지어지게 되므로 그룹 하나에 튜플 하나가 들어가게 되죠.

그렇다면 결국 max(총액)=총액 은 항상 참이 되어 모든 튜플이 출력되어 버리는 결과가 나옵니다.

 

올바른 작성법은 정답의 SQL문이 가장 적절합니다. 이외의 작성은 해당 SQL문을 꼬아서 만드는 방법이거든요.

 

종종 select 상호, max(총액) from 거래내역; 으로 적는분이 있습니다.

이 경우 가장 큰 총액이 출력되는 것은 맞으나 그룹이 지어지지 않았기 때문에 '상호'가 정금강업으로 올바르게 출력되지 않는 결과가 나옵니다.

 

행복한 하루되세요 :)

  • 관리자
    2021-04-13 11:29:55

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

     

    having은 각 그룹에 적용될 조건을 적는 자리입니다.

    결과로 '참' 또는 '거짓'이 나와야 하죠.

     

    때문에 적는다면 having max(총액)=총액 이 되는데 문제는, 총액의 값이 모두 달라 각 튜플마다 그룹이 지어지게 되므로 그룹 하나에 튜플 하나가 들어가게 되죠.

    그렇다면 결국 max(총액)=총액 은 항상 참이 되어 모든 튜플이 출력되어 버리는 결과가 나옵니다.

     

    올바른 작성법은 정답의 SQL문이 가장 적절합니다. 이외의 작성은 해당 SQL문을 꼬아서 만드는 방법이거든요.

     

    종종 select 상호, max(총액) from 거래내역; 으로 적는분이 있습니다.

    이 경우 가장 큰 총액이 출력되는 것은 맞으나 그룹이 지어지지 않았기 때문에 '상호'가 정금강업으로 올바르게 출력되지 않는 결과가 나옵니다.

     

    행복한 하루되세요 :)

  • 관리자
    2021-04-19 11:58:06

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

     

    아뇨.

     

    해당 코드는 그룹 별로 max(총액)이 출력되겠으나, 상호별로 그룹된 각 튜플은 같은 이름의 상호가 없으므로 튜플 하나당 그룹이 하나로 지어지게 됩니다.

     

    즉, 모든 튜플이 출력되고 필드명만 max(총액)이 될 뿐이죠.

     

    해당 문제의 경우 답안의 sql문 외의 다른 답이 나오기 어렵습니다.

     

    행복한 하루되세요 :)

  • *
    2021-04-17 02:42:26

    그러면  select 상호, max(총액) from 거래내역 GROUP BY 상호; 이렇게 하면 맞는 답이 되는건가요? 

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