정답이
Select 상호, 총액
F rom 거래내역
Where 총액 In (Select Max(총액)
F rom 거래내역)
이라고 되어있는데
그냥
Select 상호, Max(총액) as 총액
F rom 거래내역
으로 쓰면 답이 틀린건가요?
*F rom은 붙여쓰면 부적절한 문구가 섞여있다하여 글이 등록되지 않아, 띄어쓰기 했습니다.
안녕하세요 길벗수험서 운영팀입니다.
안됩니다.
그룹함수를 그룹없이 사용하게 되면 테이블을 하나의 그룹으로 봅니다.
그래서 테이블에서 최대값에 해당하는 총액이 나오지만, 상호는 튜플 전체 또는 max(총액)과 관계없는 첫번째 튜플의 상호만 출력되게 됩니다.
결과 : 대명금속 / 948000
혹여 상호로 그룹을 하고 max를 출력한다 하더라도, 상호가 다 다르므로 튜플 하나당 그룹 하나가 지어지게 되고, 이렇게 되면 그룹 내의 max는 구할 이유가 없어지게 됩니다.
행복한 하루되세요 :)
-
관리자2023-04-19 10:04:03
안녕하세요 길벗수험서 운영팀입니다.
안됩니다.
그룹함수를 그룹없이 사용하게 되면 테이블을 하나의 그룹으로 봅니다.
그래서 테이블에서 최대값에 해당하는 총액이 나오지만, 상호는 튜플 전체 또는 max(총액)과 관계없는 첫번째 튜플의 상호만 출력되게 됩니다.
결과 : 대명금속 / 948000
혹여 상호로 그룹을 하고 max를 출력한다 하더라도, 상호가 다 다르므로 튜플 하나당 그룹 하나가 지어지게 되고, 이렇게 되면 그룹 내의 max는 구할 이유가 없어지게 됩니다.
행복한 하루되세요 :)
-
관리자2023-04-21 09:55:09
안녕하세요 길벗수험서 운영팀입니다.
예, 가능합니다.
max 대신 all을 사용한 질의가 나올 것이라고는 생각도 못해봤는데, 창의적인 답변이네요 :)
혹시나 구문 오류가 생길까 싶어(논리적으로는 맞으나 코드 규칙 상 오류인 경우)
실제로 MySQL에서 돌려봤으나 정상적으로 결과가 나왔습니다.
행복한 하루되세요 :)
-
*2023-04-21 04:29:00
그럼 혹시
Select 상호,총액
F rom 거래내역
Where 총액 >= ALL(Select 총액
F rom 거래내역)
은 가능할까요..!