본문 바로가기
SQL

SQL 강의 SQLP SQLD 기출 문제 - 008 ( COUNT 집계 함수 )

by SQL Master 2022. 10. 12.
반응형

SQL에서 집계 함수들 문제를 풀 때 가장 유의해야 하는 게 NULL 값에 대한 처리방식을 이해는 겁니다. COUNT 집계 함수 인자 값에 따라서 다른 결과값을 리턴합니다.

 

문제

다음 보기 중 수행 결과가 다른 것은?

[TABLE_A]

COL1
A
B
C
NULL
NULL
1) SELECT COUNT(1) FROM TABLE_A;
2) SELECT COUNT(COL1) FROM TABLE_A;
3) SELECT COUNT(NULL) FROM TABLE_A;
4) SELECT COUNT(NVL(COL1, 'A')) FROM TABLE_A;
5) SELECT COUNT(*) FROM TABLE_A;
6) SELECT COUNT(*) FROM TABLE_A WHERE COL1 IS NOT NULL;

 

 


 

문제풀이

  • COUNT(*), COUNT(1) 은 NULL과 상관없이 모든 ROW 수를 리턴합니다.
  • COUNT(컬럼) 은 NULL를 제외한 ROW 수를 리턴합니다.
  • COUNT(NULL) 은 0를 리턴합니다.
1) SELECT COUNT(1) FROM TABLE_A;
    >> NULL과 상관 없이 전체 ROW 수 리턴 = 결과값 5

2) SELECT COUNT(COL1) FROM TABLE_A;
    >> NULL을 제외한 ROW 수 리턴 = 결과값 3
    
3) SELECT COUNT(NULL) FROM TABLE_A;
    >> NULL 만 COUNT하면 0을 리턴 = 결과값 0
    >> 이건 매우 중요합니다!!! 꼭 외워두세요!!

4) SELECT COUNT(NVL(COL1, 'A')) FROM TABLE_A;
    >> NULL값을 'A'로 치환했기 때문에 전체 ROW 수 리턴 = 결과값 5
    
5) SELECT COUNT(*) FROM TABLE_A;
    >> NULL과 상관 없이 전체 ROW 수 리턴 = 결과값 5
    
6) SELECT COUNT(*) FROM TABLE_A WHERE COL1 IS NOT NULL;
    >> NULL을 제외한 ROW 수 리턴 = 결과값 3

 

 

 

오늘은 COUNT 인자 값에 따라 리턴하는 ROW를 알아봤습니다.

실제 현업에서는 NULL값을 보통 NVL 해서 치환해서 사용하거나 테이블 생성 시 DEFAULT 선언합니다.

추가적인 궁금증은 댓글로 달아주세요!! :)

 

반응형

댓글