SQL 테스트 - group by

업데이트:

문제

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

예제

table name = 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 |

출력

| NAME | COUNT | |——-|——-| | Lucy | 3 | | Raven | 2 |

문제풀이

이번문제는 이전과 똑같이 그룹지어서 카운트하는 문제인데 여기에 조건이 하나 추가되었다. 일반적인 select 문에서 조건은 where 를 사용하는데 그룹지어졌을때는 having 을 사용한다.

정답

SELECT NAME, count(NAME) count from ANIMAL_INS 
group by NAME
HAVING count(NAME) > 1
order by NAME

댓글남기기