그냥 아무 생각없이 COUNT 를 썼다간 다른 결과를 얻을 수 있음
그냥 아무 생각없이 COUNT 를 썼다간 다른 결과를 얻을 수 있음
문제
[프로그래머스] Lv.2 동명 동물 수 찾기.MySQL
출처
https://school.programmers.co.kr/learn/courses/30/lessons/59041?language=mysql
문제에서 ! 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 라는 문구!!!가 있기 때문에 null 값 제외
COUNT(*) VS COUNT(열)
두개의 차이는 NULL 값의 체크여부
- COUNT(*)은 NULL 이여도 개수에 포함
- COUNT(특정 컬럼)은 NULL 값 포함하지 않음
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME
- COUNT(NAME)은 NAME 열의 null이 아닌 값만 세는 방식입니다. 즉, NAME이 null인 행은 카운트에서 제외됩니다.
- 만약 NAME에 null 값이 포함되어 있다면, null 값은 계산하지 않습니다.
SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(*) >= 2
ORDER BY NAME
- COUNT(*)은 해당 그룹 내 모든 행을 셉니다. 열의 값이 null이더라도 그 행은 카운트에 포함됩니다.
- NAME이 null이어도 그 행은 계산됩니다.
'프로그래머스 > SQL' 카테고리의 다른 글
서브쿼리 [프로그래머스] 대여횟수가 많은 자동차들의 월별 대여 횟수 구하기 (MySQL/LV3) (2) | 2024.09.26 |
---|---|
ROUND 함수 [프로그래머스] LV2 노선 별 평균 역 사이 거리 조회하기.MySQL (0) | 2024.09.23 |
MAX() 함수 [프로그래머스] Lv.2 가격이 제일 비싼 식품의 정보 출력하기.MySQL (0) | 2024.09.09 |
[프로그래머스] Lv.2 특정 물고기를 잡은 총 수 구하기.MySQL (0) | 2024.09.05 |
[프로그래머스] Lv.2 업그레이드 된 아이템 구하기 (서브쿼리).MySQL (0) | 2024.09.04 |