반응형
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 선언합니다.
추가적인 궁금증은 댓글로 달아주세요!! :)
반응형
'SQL' 카테고리의 다른 글
SQL 강의 SQLP SQLD 기출 문제 - 010 ( LIKE, JOIN ) (0) | 2022.10.20 |
---|---|
SQL 강의 SQLP SQLD 기출 문제 - 009 ( UNION ALL ) (0) | 2022.10.13 |
SQL 강의 SQLP SQLD 기출 문제 - 007 ( NULL 체크 함수 ) (0) | 2022.10.10 |
SQL 강의 SQLP SQLD 기출 문제 - 006 ( ORACLE AUTO COMMIT ) (0) | 2022.10.10 |
SQL 강의 SQLP SQLD 기출 문제 - 005 / 데이터 타입, 묵시적 형변환 (0) | 2022.10.08 |
댓글