My SQL / sublime
문제: 동명 동물 수 찾기
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
예시
예를 들어 ANIMAL_INS 테이블이 다음과 같다면
ANIMAL_ID | ANIMAL_TYPE | DATETIME | INTAKE_CONDITION | NAME | SEX_UPON_INTAKE |
A396810 | Dog | 2016-08-22 16:13:00 | Injured | Raven | Spayed Female |
A377750 | Dog | 2017-10-25 17:17:00 | Normal | Lucy | Spayed Female |
A355688 | Dog | 2014-01-26 13:48:00 | Normal | Shadow | Neutered Male |
A399421 | Dog | 2015-08-25 14:08:00 | Normal | Lucy | Spayed Female |
A400680 | Dog | 2017-06-17 13:29:00 | Normal | Lucy | Spayed Female |
A410668 | Cat | 2015-11-19 13:41:00 | Normal | Raven | Spayed Female |
- Raven 이름은 2번 쓰였습니다.
- Lucy 이름은 3번 쓰였습니다
- Shadow 이름은 1번 쓰였습니다.
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
NAME | COUNT |
Lucy | 3 |
Raven | 2 |
본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.
풀이
두 번 이상 쓰인 이름과 횟수를 구하는데 실패했다. COUNT(*)가 2 이상이라는 조건을 걸고 싶었는데 집계함수에 조건을 적용하지 못하는건가?
제출한 오답
-- 코드를 입력하세요
SELECT NAME,COUNT(*)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
ORDER BY NAME ASC;
몰랐던 문법
FROM 절에 사용하는 서브쿼리 (=인라인 뷰)
SELECT ...FROM (서브쿼리) [AS] 이름...
서브쿼리는 SELECT 문의 FROM 절에서도 사용할 수 있습니다.
이때 서브쿼리에 의해 선택된 결과 집합은 FROM 절에서 하나의 테이블로써 사용됩니다.
SELECT 문의 FROM 절에서 사용되는 모든 테이블에는 이름이 필요합니다.
따라서 FROM 절에서 사용되는 서브쿼리는 위의 문법처럼 반드시 이름을 정의해야 합니다.
http://www.tcpschool.com/mysql/mysql_multipleTable_subquery
참고: 서브쿼리 종류
다시 제출한 답
-- 코드를 입력하세요
SELECT NAME,COUNT(*)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(*)>1
ORDER BY NAME ASC;
-> HAVING 절을 사용하니 내가 생각했던 대로 조건을 걸 수 있었다.
다른 답
SELECT NAME, COUNT
FROM(
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME) A
WHERE COUNT > 1
ORDER BY NAME ASC;
-> 서브쿼리를 활용하는 방법. 대신 별칭을 반드시 지정해줘야 한다.
'데이터 분석 > SQL 연습문제' 카테고리의 다른 글
코테 연습 15일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.02.20 |
---|---|
코테 연습 14일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.02.19 |
코테 연습 12일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.02.15 |
코테 연습 11일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.02.14 |
코테 연습 10일차 (프로그래머스 SQL 고득점 Kit) (0) | 2022.02.13 |
댓글