BETWEEN 구문에 MIN AND MAX 2

by 헝오 [SQL Query] [2022.04.04 17:23:49]


안녕하세요 쿼리 조건문에 BETWEEN절에서 예시로

WHERE col_num BETWEEN MIN(col_num) AND MAX(col_num) 라는 조건문을 걸면

ORA-00934: 그룹 함수는 허가되지 않습니다. 라는 오류메시지가 나오는데 

오류 메시지가 나오는 이유가 MIN(col_num)과 MA(col_num) 사이에 값이 1개가 아니여서 저런 오류가 나오는거일까요?

by 마농 [2022.04.04 17:26:14]

WHERE 절은 원본에 대한 조건이고
그룹핑 결과에 대한 조건은 HAVING 절 입니다.
WHERE 절에 그룹결과를 조건으로 줄 수 없습니다.


by 헝오 [2022.04.04 17:33:58]

답변 감사드립니다. 마농님

select col_num

from dual

where col_num BETWEEN MIN(col_num) AND MAX(col_num)

쿼리는 그러면 성립되지 않는다는 말씀이신건가요?


by 마농 [2022.04.05 10:21:18]

네. 안됩니다.


by 신이만든지기 [2022.04.05 10:55:31]

필요 시 서브쿼리로 바꾸시면 됩니다.

select * 
  from table_a
where col_num between (select min(col_num) from table_b) 
    and (select max(col_num) from table_b);

또는

select a.*
  from table_a a 
        , (select min(col_num) min_data, max(col_num) max_data from table_b) b
where a.col_num between b.min_data and b.max_data;

 


by 우리집아찌 [2022.04.05 13:53:00]

min 에서 max면 전부다 아닌가요??

굳이 where 조건을 쓸 이유가 없는데요


by 신이만든지기 [2022.04.05 14:35:45]

엇! 그러네요. ㅎㅎ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입