article thumbnail image
Published 2021. 7. 4. 17:48
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
복사했습니다!