일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 데이터분석전문가
- 데이터리안
- 데이터분석마인드셋
- 투자도서
- 빅데이터분석기사
- 투자마인드
- BNK저축은행
- sql
- 빅분기
- 우금캐면접
- 정처기
- 빅분기실기
- 통계독학
- MySQL
- 데이터분석
- 메타코드m
- 실기1유형
- 데이터넥스트레벨챌린지
- 우리금융캐피탈
- 빅분기 실기
- 빅데이터분석기사 실기
- 데이터분석가
- 데이터자격증
- boostcourse
- 우금캐
- 빅데이터분석기사실기
- 빅분기1유형
- 컨버티드
- 메타코드
- 우리금융캐피탈면접
- Today
- Total
하파와 데이터
SQL- Null 에 따른 AVG 값의 차이 본문
SQL에서 마주하는 데이터셋에는 NULL이 있는경우와 없는 경우가 있을 것이다.
사실 인위적인 데이터가 아니고서야 NULL이 없는 데이터가 없을 것이라고 예상이된다.
데이터를 분석하는 측면에서는 수집되지 않은 데이터를 어떻게 처리할 것인지 0으로 처리할 것인지
또는 아예 그 데이터셋 자체를 삭제하고 데이터를 분석할 것인지 등을 고민해야할텐데
그를 위해선, SQL에서 집계함수를 사용할때 어떤 방법을 사용했을때 NULL을 무시할 수 있는지
또는 NULL을 0처럼 인식해서 값을 얻을 수 있는지 알아야하겠다.
예시 데이터
집계함수
SQL에서 숫자형 데이터를 분석해주는 다양한 집계함수들을 볼 수 있다.
COUNT(*) - 데이터의 갯수를 출력
SUM(*) - 데이터 값의 합계를 출력
AVG(*) - 데이터 값의 평균을 출력
MIN(*) - 데이터 값 중 최소값을 출력
MAX(*) - 데이터 값 중 최대값을 출력
다만 여기서 주의할 것은 '*'를 사용해서 구하는 값들은 NULL의 데이터 역시 포함해서 값을 출력한다는 것이다.
예를들어, COUNT(*)의 값과 COUNT(SupplierID)의 값은 다르다.
SELECT COUNT(*)
FROM Products
5
SELECT COUNT(SupplierID)
FORM Products
4
이러한 것을 고려했을때, 주요하게 달라지는 것이 바로 평균 값(AVG)이다.
SELECT AVG(Price)
FROM Products
15.67
SELECT SUM(Price)/COUNT(*)
FROM Products
11.75
총합을 더해서 총갯수로 나누는 의미의 행위는 같지만,
AVG(Price)와 SUM(Price)/COUNT(*)의 출력값은 상이하다.
AVG(Price)는 18+19+10 /3(null값을 제외했기에)
SUM(Price)/COUNT(*)는 18+19+10/4(null도 포함하기에)
데이터분석가가 어떠한 의도로 평균을 얻어내고자 하는지에 따라
AVG 함수를 사용할지, SUM/COUNT(*)를 사용할지 구분해야한다.
'Development > SQL' 카테고리의 다른 글
SQL에서 데이터 몇개만 보기 (0) | 2024.10.18 |
---|---|
[SQL이론] DATE 형태 변형, 일자 변경 (0) | 2023.08.08 |
[SQL 이론] 숫자형, 문자형 기본함수 (0) | 2023.08.07 |
SQL - PIVOT 변환하기 (1) | 2023.07.31 |
SQL 소수점 처리 (0) | 2023.07.22 |