728x90
GROUP BY 는 원하는 데이터들 끼리 묶어서 처리하고 싶을 때 사용할 수 있다.
HAVING은 그룹에 대해 조건에 맞는 데이터만 뽑아 사용할 때 쓰인다.
HAVING 과 WHERE의 차이는
WHERE는 그룹화 또는 집계가 발생하기 전에 레코드를 필터링하는 데 사용되는 반면, HAVING 은 그룹화 또는 집계가 발생한 후 레코드를 필터링하는 데 사용된다는 것이다.
GROUP BY는 쉽게 ~~별로 묶고 싶을 때 사용한다고 생각하면 편하다.
ex) 성 별로, 직함 별로, 나이대 별로 등
GROUP BY 예시
-- Group by => selcet 문을 통해 가져온 모든 로우를 하나의 그룹으로 묶고
-- 그 안에서 로우의 수, 총합, 평균, 최대, 최저 값을 구하게 된다.
-- 사원의 수를 성별로 가져온다.
select gender,count(*)
from employees
group by gender;
-- 각 부서별로 현재근무하고 있는 사원들의 수를 가져온다.
select dept_no, count(*) as people
from dept_emp
where to_date = '9999-01-01' -- 여기서 '9999-01-01' 이 현재도 근무중인 것을 의미
group by dept_no;
-- 급여 수령 시작일 별 급여의 평균을 구한다
select from_date, avg(salary) as avg
from salaries
group by from_date
order by from_date asc;
HAVING 절 예시
-- having - group by 절을 이용하여 개발자가 정한 기준으로 그룹을 나눈 후 having 절로 만든 조건에 맞는
-- 그룹의 데이터만 가져올 수 있다.
-- 10만명 이상이 사용하고 있는 직함의 이름과 직원의 수를 가져온다.
select title, count(*)
from titles
group by title -- 직함별로 그룹을 나눈다.
having count(*) >= 100000;
-- 5만명 이상이 근무하고 있는 부서의 부서번호와 부서 소속 사원의 수를 가져온다
select dept_no, count(emp_no) as people
from dept_emp
group by dept_no
having count(emp_no) >= 50000;
'MySQL' 카테고리의 다른 글
MySQL 데이터 베이스 및 테이블 생성 (0) | 2021.07.07 |
---|---|
MySQL 서브쿼리(SUB QUERY) (0) | 2021.07.05 |
MySQL 조인(JOIN) (0) | 2021.07.05 |
MySQL SELECT문 및 연산자 (0) | 2021.07.01 |
MySQL 시작 및 데이터베이스 조회 (0) | 2021.06.30 |