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
'문제풀이 > SQL 문제 풀이' 카테고리의 다른 글
[ 프로그래머스 ] NULL 처리하기 (MySQL) (0) | 2024.03.08 |
---|---|
[ 프로그래머스 ] 이름에 el이 들어가는 동물 찾기 (MySQL) (0) | 2024.03.08 |
[ 프로그래머스 ] 특정 옵션이 포함된 자동차 리스트 구하기 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 자동차 대여 기록에서 장기/단기 대여 구분하기 (MySQL) (0) | 2024.03.05 |
[ 프로그래머스 ] 조건에 부합하는 중고거래 댓글 조회하기 (MySQL) (1) | 2024.03.05 |