select avg(max(qty))
from items
group by item_no
having avg(max(qty)) > 50
이 쿼리문에서 having절이 유효하지 않아서 오류가 난다고 하는데
구문상으로 잘못된걸 찾기가 힘드네요ㅠ..
구글링 하기도 뭐라 검색해야 하는지 애매해서 여쭤보게 됐습니다!
qty는 수량을 나타내는 칼럼입니다ㅎ
DB는 집합개념을 잘 잡으셔야 합니다.
지금 문장은 item_no 로 그룹 지었을때
최대값 의 평균이 50이 넘는 그룹을 찾아 최대값의 평균을 구하라
하고 명령을 준 것이라 잘못된 명령입니다.
그룹별로 최대값이 1개라 평균을 구할 수 없다고 에러를 내는 것입니다.
원하시는 결과가
select avg(qty)
from (
select item_no, max(qty) AS qty
having max(qty) > 50
) t
이것이 아닐지 추측 해 봅니다.
원래 문장에서 having절에서 avg() 만 빼도 위 결과를 얻을 수 있을 것입니다.
(안해봐서 정확하지는 않습니다. ^^)
말로하면 "최대값이 50보다 큰 item 들의 최대값의 평균"
질문을 정확히 하셔야 원하는 답을 빨리 얻을 수 있습니다.
쿼리를 작성하실때
우선 사람이 이해할 수 있게 순차적으로 작성해 보시고
익숙해 지시면 집합론적 관점에서 다시 작성해 보시면
실력이 빨리 느실 것으로 생각됩니다.