'MIN'에 해당되는 글 2건

  1. 2017.03.20 IFNULL..
  2. 2016.10.26 Min과 Max..
MySQL & MariaDB2017. 3. 20. 15:58

MySql과 MariaDB에서 Function을 사용 할때나 일반적인 쿼리를 사용 할경우 IFNULL을 사용할때가 있다.

이때 쿼리의 결과가 있는 경우와 없는 경우가 있는데..

쿼리의 결과가 있는 경우에는 IFNULL이 정상 작동해서 Null일 경우에 처리 되는 값이 정상적으로 처리가 된다.

하지만 쿼리의 결과가 1Row도 없을 경우에는 값이 제대로 나오지 않는다.

이럴경우에는 IFNULL을 사용하나 마인 상황이 발생한다.


IFNULL(MIN(컬럼), 0)

IFNULL(MAX(컬럼), 0)


위와 같이 IFNULL처리하는 컬럼에 MIN이나 MAX로 한번 감싸면 문제는 해결 된다.

IFNULL이 아니더라도 적어도 1개의 Row가 나와야 하는 상황이라면 MIN이나 MAX로 감싸도록 하자.



Posted by Z700zZz
Oracle2016. 10. 26. 13:53

서브 쿼리로 결과 값을 테이블로 만들어 놓고 그 테이블의 데이터로 다시 쿼리를 해야 하는데(예를 들어 Case When등을 쓰는경우) 서브쿼리의 결과 값이 없을 경우 제대로 된 값을 뽑아내지 못할때가 있다.

그럴땐 결과 값이 있는것처럼 만들어야 하는 경우가 발생하는데..

이럴땐 Max나 Min을 쓰도록 하자.


select case when (a.ncd + a.lld < sysdate) then 'true' else 'false' end as result from ( select nvl(change_day, 90) as ncd ,(case when login_date is null then to_date('20160401','yyyymmdd') when login_date > to_date('20160401','yyyymmdd') then login_date END) as lld from ( select min(login_date) as login_date, min(change_day) as change_day from FT_PWD_CHANGE where site_id='aaaa' AND login_id='bbbb' ) ) a


서브쿼리 컬럼 값에 min을 쓴것을 볼수 있을것이다.

min을 안썼을 경우에는 결과값이 아예 나오지 않지만 min을 쓰면 결과값이 정상적으로 출력 된다.

Posted by Z700zZz