해당 글에서는 MySQL에서 집계함수로 얻은 값을 조건절에서 사용하는 경우에 대해 알아봅니다
![]()
💡 [참고] 해당 문제를 참고하였으며, 해당 사용방법을 확인하실 수 있습니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 예시 확인
💡 해당 문제는 아래와 같으며 이를 기반으로 각각 사용하는 경우를 확인해봅니다.

2) 서브쿼리를 이용한 방법
💡 서브쿼리를 이용한 방법
- 서브쿼리를 이용하여 결과를 임시로 저장하고 서브쿼리를 조건절에 참조할 수 있습니다.
💡 예시 확인
- 서브쿼리를 이용하여 결과를 임시로 저장(t2)하며 이를 참조하여서 결과를 조건절(WHERE)에서 사용하여 최종 결과를 얻어내는 방식으로 구성합니다
SELECT t2.*
FROM (
SELECT t1.NAME
, COUNT(t1.NAME) AS COUNT
FROM ANIMAL_INS t1
GROUP BY t1.NAME
ORDER BY t1.NAME
) t2
WHERE t2.COUNT >= 2;
3) HAVING 절을 이용한 방법
💡 HAVING 절을 이용한 방법
- 집계함수의 결과를 바탕으로 그룹화된 데이터를 필터링할 수 있습니다.
💡 예시 확인
- 집계함수와 그룹화된 데이터를 기반으로 HAVING 조건절을 통해서 필터링을 하여 결과를 얻습니다
-- 코드를 입력하세요
SELECT t1.NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS t1
GROUP BY t1.NAME
HAVING COUNT(t1.NAME) >= 2
ORDER BY t1.NAME ASC;
4) 더 알아보기
1. COUNT(*)과 COUNT(column)의 차이
💡 COUNT(*)과 COUNT(column)의 차이
- COUNT(*): ‘테이블의 모든 행’을 세는 집계 함수입니다. 그렇기에 테이블의 전체 행의 수를 반환합니다.
- COUNT(Column): 지정한 열(Column)에서 ‘NULL이 아닌 값의 개수’를 세는 집계 함수입니다.
💡 결론적으로는 NULL의 개수를 세려면 COUNT(*)을 사용하며 NULL의 개수를 제외하려면 COUNT(column)을 사용합니다.
💡 예시 확인
- COUNT(*)을 이용하여 모든 컬럼을 세고 있지만 NULL인 값이 들어온 경우에 대해 이를 제외하고 싶을때를 위해서 IS NOT NULL을 써주고 있다.
-- 코드를 입력하세요
SELECT t1.NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS t1
WHERE t1.NAME IS NOT NULL
GROUP BY t1.NAME
HAVING COUNT(t1.NAME) >= 2
ORDER BY t1.NAME ASC;
💡 예시 확인
- COUNT(column)을 이용하여 해당 모든 컬럼을 세고 있지만 NULL의 값을 포함하지 않고 세고 있기에 IS NOT NULL을 사용하지 않는다.
-- 코드를 입력하세요
SELECT t1.NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS t1
GROUP BY t1.NAME
HAVING COUNT(t1.NAME) >= 2
ORDER BY t1.NAME ASC;
오늘도 감사합니다. 😀
'DB > Short SQL문' 카테고리의 다른 글
[DB/Short] MySQL SQL Function : 랜덤 숫자 만들기 (0) | 2024.04.08 |
---|---|
[DB/Short] MySQL SQL Function : 문자열 내에 랜덤 문자열 추출하기 (0) | 2024.04.08 |
[DB/Short] MySQL SQL Function : 랜덤 문자, 랜덤 이름 만들기 (0) | 2024.04.08 |
[DB/Short] MySQL: DATETIME ↔ DATE 타입 간의 변환 방법 (0) | 2023.10.05 |
[DB/Short] MySQL - 문자열 대소문자 구분/구분하지 않고 정렬하기 : BINARY (0) | 2023.10.04 |