WHERE 절에 MAX를 사용 못해서
SELECT 상호,총액
FROM 거래내역
GROUP BY 총액
HAVING MAX(총액);
그룹바이를 사용하면 틀리나요 만약 사용할수 있다면 올바르게 그룹절을 작성했는지 궁금합니다. 틀렸다면 올바른 작성문도 알려주시면 감사하겠습니다.
안녕하세요 길벗수험서 운영팀입니다.
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 상호; 이렇게 하면 맞는 답이 되는건가요?