database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41719 게시물 읽기
No. 41719
having절에 대한 기초적인 질문 가능 할까요?
작성자
정우리
작성일
2019-05-03 03:08
조회수
2,609

select avg(max(qty))

from items

group by item_no

having avg(max(qty)) > 50

 

이 쿼리문에서 having절이 유효하지 않아서 오류가 난다고 하는데

구문상으로 잘못된걸 찾기가 힘드네요ㅠ..

구글링 하기도 뭐라 검색해야 하는지 애매해서 여쭤보게 됐습니다!

qty는 수량을 나타내는 칼럼입니다ㅎ

이 글에 대한 댓글이 총 1건 있습니다.

DB는 집합개념을 잘 잡으셔야 합니다.

지금 문장은 item_no 로 그룹 지었을때

최대값 의 평균이 50이 넘는 그룹을 찾아 최대값의 평균을 구하라

하고 명령을 준 것이라 잘못된 명령입니다.

그룹별로 최대값이 1개라 평균을 구할 수 없다고 에러를 내는 것입니다.

 

원하시는 결과가 

select avg(qty)

from (

  select item_no, max(qty) AS qty

  from items

  group by item_no

  having max(qty) > 50

) t

이것이 아닐지 추측 해 봅니다.

원래 문장에서 having절에서 avg() 만 빼도 위 결과를 얻을 수 있을 것입니다.

(안해봐서 정확하지는 않습니다. ^^)

 

말로하면 "최대값이 50보다 큰 item 들의 최대값의 평균"

질문을 정확히 하셔야 원하는 답을 빨리 얻을 수 있습니다.

 

쿼리를 작성하실때

우선 사람이 이해할 수 있게 순차적으로 작성해 보시고

익숙해 지시면 집합론적 관점에서 다시 작성해 보시면 

실력이 빨리 느실 것으로 생각됩니다.

박인호(paerae)님이 2019-05-03 10:25에 작성한 댓글입니다.
이 댓글은 2019-05-03 10:31에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41722같은 테이블 같은 인덱스 같은쿼리 속도가 다른이유는? [1]
개발자
2019-05-13
2760
41721질문드립니다. MVIEW관련 [2]
hsn
2019-05-09
2542
41720여러줄의 결과를 하나의 결과값으로 받기(textarea에 넣기위해) [2]
개발자
2019-05-03
2796
41719having절에 대한 기초적인 질문 가능 할까요? [1]
정우리
2019-05-03
2609
41718where절을 이용한 join에 관한 문의입니다! [4]
정우리
2019-05-01
2888
41717기초질문: sysdba 로 로그인할때 에러 [2]
김슬기
2019-04-29
2611
41716shell 수행 관련 내용입니다 [1]
탁구공
2019-04-27
2358
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다