문제풀이/SQL 문제 풀이
[ 프로그래머스 ] 동명 동물 수 찾기 (MySQL)
RealTone
2024. 3. 8. 13:50
728x90
🔗 문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 문제 풀이 및 해석
- 이름의 수가 2번 이상 쓰인 이름을 조회하는 것이다.
- NAME을 기준으로 중복되는 것을 세야 하므로
GROUP BY NAME HAVING COUNT(NAME) > 1 이 필요하다.
- 이름과 그 이름을 세는 테이블을 조회해야 하므로
SELECT NAME , COUNT(NAME) AS COUNT
을 해주는데, COUNT(*)을 하면, NULL 값도 포함하므로 NULL이 2개 이상 있는 데이터면 오류가 난다. (이 문제는 NULL이 없어서 통과는 된다.)
4. 마지막으로 NAME을 이름 순으로 정렬하기 위해
ORDER BY NAME 문을 추가해주면 끝난다.
⭐️ 정답 코드 및 설명
SELECT
NAME
, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME
🤔 문제 후기
크게 어려운 점은 없었는데, SELECT NAME, COUNT(NAME) 여기서 COUNT (??) 이 곳에 왜 NAME이 들어가야 할까? 라는 의문이 생겼다. (어차피 숫자를 세는 것은 HAVING COUNT(NAME) 이기 때문이다.) 하지만, SELECT문에서 COUNT(NAME)은 그냥 NAME이 있는 모든 행을 조사하는 것이므로 결과에 영향을 미치지 않는다는 것을 알았다.
728x90