제로베이스/코딩테스트

[프로그래머스 mysql oracle] 동명 동물 수 찾기

진주네카라 2022. 7. 10. 16:20
728x90

 

동명 동물 수 찾기 

 

 

문제 설명

코딩테스트 연습 - 동명 동물 수 찾기 | 프로그래머스 스쿨 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

 

 

입출력 예

예를 들어 ANIMAL_INS 테이블이 다음과 같다면

 

  • Raven 이름은 2번 쓰였습니다.
  • Lucy 이름은 3번 쓰였습니다
  • Shadow 이름은 1 쓰였습니다.

 

따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

 

 

 

입출력 예 설명

이름 없는 동물은 제외하고! 같은 동물 이름이 두 번 쓰인 횟수를 조회한다

 

먼저 이름별 그룹으로 묶어서 횟수를 조회하는 것이 우선이다.  >>  확인코드의 실행결과 참고!

그리고 having 조건절을 추가해서 필터 하는 방법 1

또는 방금 조회한 테이블을 서브쿼리로 사용해서 where 조건으로 필터링하는 방법 2

로 구현해보았다.

 

 

풀이코드

sql1 mysql

-- mysql
-- 코드를 입력하세요
SELECT NAME, COUNT(NAME) AS CNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING NAME IS NOT NULL
AND CNT >= 2
ORDER BY NAME;

 

sql2 oracle

-- oracle
-- 코드를 입력하세요
SELECT NAME, CNT
FROM
(SELECT A.NAME, COUNT(A.NAME) AS CNT
FROM ANIMAL_INS A
GROUP BY NAME
ORDER BY NAME)
WHERE CNT >= 2;

 

실행 결과

 

 

 

 

확인코드

sql

오라클 서브쿼리문

-- 코드를 입력하세요
SELECT A.NAME, COUNT(A.NAME) AS CNT
FROM ANIMAL_INS A
GROUP BY NAME
ORDER BY NAME;

 

실행결과

 

 

 

 

이제 서브쿼리도 잘 쓸 줄 안다구요^-^

 

 

 

 

 

 

 

728x90