728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/59408
주어진 문제는 동물의 고유한 이름 개수를 조회하는 문제이다.
이 때, 이름이 NULL인 경우는 집계하지 않는다.
내 풀이
SELECT COUNT(DISTINCT NAME) as count
FROM ANIMAL_INS;
풀이는 간단하다.
먼저, SQL에서 제공하는 중복 제거 키워드인 DISTINCT를 사용하여,
중복이 없는 고유한 이름의 개수를 구한다.
(* 참고로 DISTINCT 뒤에 2개 이상의 컬럼을 사용하면, DISTINCT 뒤에 오는 모든 컬럼에 대해 하나의 행으로 인식하여, 그 행의 중복을 제거한다.)
그리고 이름이 NULL인 경우는 집계하지 않는다는 조건에 따라서 WHERE절을 사용해야하지 않을까 생각할 수 있지만,
그럴 필요가 없다.
왜냐하면 COUNT 함수에서 *이 아닌 컬럼명을 지정하면, 해당 컬럼에 존재하는 null의 개수를 세지 않기 때문에
주어진 조건대로 NULL인 경우는 집계하지 않게 된다.
(참고로 COUNT(*)는 NULL 값을 포함하여 출력한다.)
728x90
'코딩테스트 > SQL' 카테고리의 다른 글
[프로그래머스][MySQL] Lv. 2 연도별 대장균 크기의 편차 구하기 (0) | 2024.07.15 |
---|---|
[프로그래머스][MySQL] Lv. 3 물고기 종류 별 대어 찾기 (0) | 2024.07.15 |
[프로그래머스][MySQL] Lv. 2 특정 물고기를 잡은 총 수 구하기 (0) | 2024.07.15 |
[프로그래머스][MySQL] Lv. 2 동명 동물 수 찾기 (0) | 2024.07.12 |
[프로그래머스][MySQL] Lv. 1 특정 형질을 가지는 대장균 찾기 (0) | 2024.07.09 |