본문 바로가기

그 외 경험기

[MySQL] AVG함수 NULL 포함 안 되는 거 해결 방법

반응형

목차

     

     

    이제부터 다음 표 처럼 SQL 테이블에 null 값이 있으면 우리는 주의를 해야된다. 왜냐 문제가 아닌 문제가 생기기 때문ㅋㅋ 문제라고 안뜨는게 더 무서운 거 아시죤?

     

     

    썸네일

    AVG함수 NULL 포함 안 되는 거 해결법

     

    ID NUM Name
    1 42 A
    2 32 B
    3 NULL V

     

    SELECT COUNT(*) NAME FROM table; 
    
    -- 결과 : 3
    
    SELECT COUNT(NUM) NAME FROM table; 
    
    -- 결과 : 2

     

     

    위에 테이블이 있다고 했을 때 다음과 같이 SQL을 작성하면, 다음과 같이 된다. 왜 이런 차이가 생기냐면 NULL 값을 안 세기 때문이다. COUNT와 같이 AVG도 역시 NULL값을 먹금하기 때문에, SELECT AVG(NUM)을 하면 (42+32+0)/3 이 아니라 (42+32)/2 를 하게 되는 것. 그렇기 때문에 만약에 첫번째 방식으로 평균을 구하는 걸 원한다면, null을 0으로 할지, 무시할지 나눠지게 된다. 후자 방식은 뭐.. 그대로 하면 되고요? ㅋㅋ 전자를 원한다면 SELECT AVG(NUM) 대신 SELECT SUM(NUM)/COUNT(*)을 쓰자. 결론: 따로따로 각각 구해서 나누기로 평균 구해야된다.