[오라클]group by 절 count값이 없는 경우에 대한 처리. 1 2 10,336

by 김쿠쿠 [2015.11.19 10:13:43]


안녕하세요.

통계자료 쿼리 중 궁금한게 있어서 질문글 올립니다.

 

group by 한 경우 count값이 null인 경우에도

0으로 표출을 하고 싶은데 이 쿼리에 대한 방법이 있는지 여쭙니다.

nvl(count(*), 0) 으로는 나오지가 않네요..

 

답변을 부탁드립니다.

by 마농 [2015.11.19 10:27:38]

1. 집계함수 사용은 두가지 방식으로 사용됩니다.
  - Group By 가 있는 경우와 없는 경우
2. Group By 가 없는 경우
  - 전체를 대상으로 집계하기 때문에 데이터가 없어도 값이 나옵니다.(1 Row)
  - 전체라고하는 명확한 대상이 존재하기 때문이구요.
3. Group By 가 있는 경우
  - 대상 그룹별로 집계를 합니다.
  - 그런데 대상 그룹 자체가 없다면? 집계 결과도 없습니다.
4. 결과 차이에 대한 이해
  - Null 이 1건 조회되는 것과(1 Row)
  - 결과가 아예 없는 것(0 Row) 은 다릅니다.
5. 해결방안은
  - 그룹기준 별로 모두 0이 나와야 한다면?
    - 그룹기준에 대한 별도 집합이 있어야 하고
    - 이를 기준으로 아우터조인해야 합니다.
  - 그룹이 어차피 하나밖에 없는 경우?
    - 불필요하게 Group By 를 사용한 경우입니다.
    - Group By 구문을 제거합니다.


by 김쿠쿠 [2015.11.19 10:40:18]

아하.. 마농님 감사합니다. 그룹에 따른 별도집합을 생성해서 조인하니 값이 잘 나오네요.^^;

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