-
<SQL> Programmers_동명 동물 수 찾기데이터 분석 공부 2020. 7. 29. 01:13
문제:
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
데이터 타입
보고 무의식적으로
select name, count(name) count from animal_ins group by name
코딩하여 풀려고 했는데, 결과가 다음과 같이 나왔다.
그렇다. count가 모두 1로 나왔다. 어떻게 해결을 해야 할까?
GROUPY BY에 조건을 거는 HAVING절을 이용하면 쉽게 아주 쉽게 풀 수 있다.
SELECT NAME, COUNT(NAME) COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >1
HAVING 절이 무엇일까?
GROUP BY 절과 HAVING 절의 특징
- GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수를 사용
- 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다.
- GROUP BY 절에서는 SELECT 절과는 달리 ALIAS 명을 사용불가
- 집계 함수는 WHERE 절에는 올 수 없다. (집계 함수를 사용할 수 있는 GROUP BY 절보다 WHERE 절이 먼저 수행)
- WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
- HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.
- GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
- HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다.
답
'데이터 분석 공부' 카테고리의 다른 글
<SQL> Programmers_입양 시각 구하기(2) (0) 2020.07.29 <SQL> Programmers_입양 시각 구하기(1) (0) 2020.07.29 <SQL> Programmers_GROUP BY_고양이와 개는 몇 마리 있을까? (0) 2020.07.29 미래의 동영상 서비스에 대한 기획서 작성 (0) 2020.06.10 <Python> 2020_06_05 코드 정리 (0) 2020.06.05