Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

데이터 분석

프로그래머스 - 고양이와 개는 몇 마리 있을까, 동명 동물 수 찾기 (GROUP BY, HAVING) 본문

SQL/프로그래머스 코딩

프로그래머스 - 고양이와 개는 몇 마리 있을까, 동명 동물 수 찾기 (GROUP BY, HAVING)

시니조 2023. 2. 26. 22:40
  • GROUP BY
  • 집계함수 COUNT
  • HAVING

고양이와 개는 몇 마리 있을까

고양이와 개가 각각 몇 마리씩 있는지 확인하기 위해 고양이와 개를 그룹지어준다. 그 후 숫자를 센다.

 

GROUP BY절은 행들을 소그룹화한다.

 

여기에 집계함수를 사용한다. 행의 수를 출력하는 함수는 크게

 

  • COUNT(*) : NULL값을 포함한 행의 수 출력
  • COUNT(표현식) : NULL값을 제외한 표현식의 행의 수 출력

으로 구한다. 

지금 데이터는 NULL값이 없어 둘 중 아무거나 사용해도 좋다.

 

SELECT ANIMAL_TYPE, COUNT(*) COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
;

 

+) 여기서 ORDER BY의 순서는 Cat, Dog 순으로 오름차순되어 그냥 ANIMAL_TYPE으로 정렬해도 된다. 하지만 특정값을 지정하고 싶다면,

SELECT ANIMAL_TYPE, COUNT(*) COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY (CASE WHEN ANIMAL_TYPE = 'Cat' THEN 1 ELSE 2 END)
;

"Cat"을 1로 "Dog"를 2로 해서 오름차순 할 수도 있다. 

 

 

 

동명 동물 수 찾기

GROUP BY와 집계함수로 계산된 소그룹의 조건을 걸기 위해선 HAVING을 사용해야한다. 

 

SELECT NAME, COUNT(*) COUNT FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(*) > 1
ORDER BY NAME
;

 

이름이 없는 동물은 집계에서 제외 > WHERE NAME IS NOT NULL

두 번 이상 쓰인 이름 > HAVING COUNT(*) > 1

 

https://school.programmers.co.kr/learn/courses/30/lessons/59041

 

프로그래머스

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

programmers.co.kr