728x90
1. NULL값 정리 방법
1-1) 제외시키기
문제) 평균 rating 구하기
▶ 원본 데이터의 rating 컬럼 값에 'Not given'이라는 값이 있음
▶ [MySQL] 사용할 수 없는 값은 알아서 연산에서 제외해줌 → 0으로 간주함
: 연산에 사용된 데이터는 'Not given'을 제외한 데이터
SELECT restaurant_name,
AVG(rating) avg_rating,
AVG(IF(rating<>'Not given', rating, NULL)) avg_rating2
FROM food_orders
Group By 1
▶ NULL 제거
- NULL 제거 이전 데이터 상태
- NULL 제거 이후 데이터 상태
: JOIN 중 INNER JOIN 한 효과와 동일한 상태가 됨
: WHERE절에서 IS NOT NULL 사용 (즉, NULL이 아닌 데이터만 조회되도록 함)
※ NULL 의 경우 != NULL 이나 <> NULL 이런 게 아니라 IS NOT NULL을 사용함.
SELECT a.order_id,
a.customer_id,
a.restaurant_name,
a.price,
b.name,
b.age,
b.gender
FROM food_orders a
LEFT JOIN customers b ON a.customer_id=b.customer_id
WHERE b.customer_id IS NOT NULL
1-2) 다른 값으로 대체하기
▶ 조건문 이용하기: IF문 사용
▶ NULL값일 때: COALESCE 함수 사용하기
[COALESCE 함수_참고 게시글]
https://velog.io/@gooook/SQL-COALESCE
SELECT a.order_id,
a.customer_id,
a.restaurant_name,
a.price,
b.name,
b.age,
coalesce(b.age, 20) "age_null제거",
b.gender
FROM food_orders a
LEFT JOIN customers b ON a.customer_id=b.customer_id
WHERE b.age is null
번외) 상식적이지 않은 값이 있는 데이터
▶ 조건문을 이용해 값의 범위를 지정해줄 수 있음
BETWEEN ~ AND 등으로 범위 지정 가능!
728x90
'데이터분석 과정 > SQL' 카테고리의 다른 글
SQL | 날짜 데이터 포맷, 조건 (1) | 2024.01.08 |
---|---|
SQL | Pivot Table 만들기 | 실습 문제 (1) | 2024.01.08 |
SQL | JOIN(조인)할 때 ON절의 컬럼명, 꼭 같아야 할까 (0) | 2024.01.08 |
SQL | 서브쿼리(Subquery) 사용법 정리 | 서브쿼리 예제 (2) | 2024.01.08 |
SQL | IF문, CASE문으로 범주 별 다른 조건 적용하기 (1) | 2024.01.08 |
댓글