728x90
동명 동물 수 찾기
문제
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. |

예시

문제에서 원하는건
- GROUP BY를 사용해 NAME을 묶어준다
- 2번이상 쓰인 이름을 찾기때문에 HAVING을 사용해준다
- 몇번 사용되었는지 COUNT를 해준다.
이렇게 3가지 입니다.
먼저 GROUP BY를 사용해 NAME으로 묶어주면서 COUNT까지 조회해 보겠습니다.
SELECT
NAME, COUNT(NAME) AS 'COUNT'
FROM
ANIMAL_INS
GROUP BY
NAME
ORDER BY
NAME
SELECT로 NAME과 COUNT를 사용해 NAME의 수를 세어 COUNT로 표기해 주었습니다.
여기서 주의해야 할 점은 COUNT(*)를 사용하면
NULL 값도 세기때문에 결과가 오답이 나올 수 있어 정확히 NAME이라 써 넣었습니다.
그리고 이번에는 HAVING을 추가해 쿼리문을 완성시키겠습니다.
HAVING은 간단하게 생각하면
GROUP BY의 WHERE절 이라고 생각하시면 될것 같습니다.
GROUP BY의 결과에 조건을 붙일 수 있습니다.
SELECT
NAME, COUNT(NAME) AS 'COUNT'
FROM
ANIMAL_INS
GROUP BY
NAME
HAVING
COUNT(NAME) > 1
ORDER BY
NAME
이렇게 작성하시면 완성입니다.

출처:[프로그래머스 코딩테스트 연습] - https://programmers.co.kr/learn/courses/30/lessons/59041
728x90
'Database' 카테고리의 다른 글
[프로그래머스 SQL - GROUP BY] 입양 시각 구하기(2) (0) | 2021.07.07 |
---|---|
[프로그래머스 SQL - GROUP BY] 입양 시각 구하기(1) (0) | 2021.07.07 |
[프로그래머스 SQL - GROUP BY] 고양이와 개는 몇 마리 있을까 (0) | 2021.07.01 |
[프로그래머스 SQL - SUM, MAX, MIN] 중복 제거하기 (0) | 2021.06.28 |
[프로그래머스 SQL - SUM, MAX, MIN] 최솟값 구하기 (0) | 2021.06.24 |