SQL/MySQL - 프로그래머스

[Lv.2] 동명 동물 수 찾기 [group by, having]

셈뇽 2024. 4. 9. 10:54
문제 파악

  • 출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수  ⇒ SELECT
  • 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM
  • 조회 순서 : 이름 순 ⇒ ORDER BY
  • 집계할 내용 : 이름이 없는 동물을 제외하고, 이름이 쓰인 횟수 ⇒ COUNT()
  • 집계 기준 : 이름 ⇒ GROUP BY

 

문제 해결을 위한 쿼리

 

group by columns;

  • 하나하나의 데이터들을 모으는 작업으로 특정 컬럼을 기준으로 설정
SELECT USERID AS 사용자 아이디, 
				SUM(AMOUNT) AS 총 구매 건수 
FROM BUYTBL 
GROUP BY USERID;

 

 

having

  • group by 내부의 where 절과 같이 필터링 조건을 설정해 준다
SELECT USERID, SUM(PRICE*AMOUNT) 총구매금액 FROM BUYTBL GROUP BY USERID
HAVING 총구매금액 >1000
ORDER BY 총구매금액 ASC;

 

 

count 집계함수

  • 횟수를 계산해 반환하는 집계함수
  • *의 경우 모든 컬럼을 선택한다
  • NULL 값이 있는 컬럼을 선택하지 않도록 주의하자
  • count(*) 또는 count(1)로 테이블의 수를 구할 수 있다. (다만 시간이 오래 걸림)

 

 

문제 해결

 

> 완성 코드

SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT>1
ORDER BY NAME;