coalesce나 ifnull은 단일행 함수입니다.
말 그대로 결과가 있을 때 행 하나하나(=단일행)에 대해 적용 할 수 있는 함수입니다.
즉 select된 행이 1건도 없다면 단일행 함수를 적용할 부분이 없겠지용.
결과가 없는데, 무엇을 치환해서 보여주나용?
무조건 결과가 있어야, row가 있어야 단일행 함수를 쓸 수 있습니다.
다중행(집합) 함수를 이용하여 결과를 얻어, 이것을 단일행 함수로 가공은 가능하나, 이경우 집합 함수를 썼기 때문에 row가 무조건 나옵니다. 이 때 단일행 함수인 null 관련 함수를 쓰면 쓰나마나 한 상황이 될 것 같습니다.
널인 데이터를 치환하는 것과
없는 데이터를 만들어 내는 것은 다른 문제입니다.
조회조건에 해당하는 데이터가 없어도 특정 값이 나오게 하려면...
데이터가 단일 건인 경우라면? 단순하게 집계함수(MIN/MAX)로 감싸주면 나옵니다.
집계함수의 특성을 이용한 것이구요.
데이터가 여러 건인 경우엔 집계함수를 사용할 수 없죠.
이 경우엔 아우터 조인을 이용 할 수 있습니다.
조인 조건을 만족하지 않아도 기준테이블은 나오게 되는
아우터 조인의 특징을 이용하는 것이죠.
http://www.gurubee.net/article/45604