문제 파악
- 출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수 ⇒ 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;
'SQL > MySQL - 프로그래머스' 카테고리의 다른 글
[Lv.2] 중복 제거하기 [count, distinct] (0) | 2024.05.06 |
---|---|
[Lv.2] NULL 처리하기 [ifnull, coalesce] (0) | 2024.05.06 |
[Lv.2] 이름에 el이 들어가는 동물 찾기 [where] (0) | 2024.04.09 |
[Lv.1] 여러 기준으로 정렬하기 [select, order by desc] (4) | 2024.04.09 |
[Lv.1] 동물의 아이디와 이름 [select, order by] (0) | 2024.04.09 |