티스토리 뷰

  • Group by
  • having

Group by : select 쿼리에 대해서 특정 속성값을 기준으로 분류하여 가져올 수 있다.

-- Group by

-- 사원의 수를 성별로 구별해서 가져온다.
select gender, count(*)
from employees
group by gender;

-- 각 부서에 근무하고 있는 사원들의 수
select dept_no, count(*)
from dept_emp
where to_date = '9999-01-01'
group by dept_no;

-- 각 부서별 과거의 매니저의 수
select * from dept_manager;
select dept_no, count(*)
from dept_manager
where to_date <> '9999-01-01'
group by dept_no;

-- 급여 수령 시작일 별 급여 총합
select * from salaries;
select from_date, sum(salary)
from salaries
group by from_date;

-- 급여 수령 시작일 별 급여 평균
select from_date, avg(salary)
from salaries
group by from_date;

-- 급여 수령 시작일 별 급여 최고액
select from_date, max(salary)
from salaries
group by from_date;

-- 급여 수령 시작일 별 급여 최소액
select from_date, min(salary)
from salaries
group by from_date;

 

having : Group by로 분류한 튜플들에 대해서 원하는 조건에 해당하는 그룹만 가져올 수 있다.

-- having
-- group by로 분류된 튜플들에 대해서 having조건에 해당하는 튜플만 살린다.

-- 10만명 이상이 사용하고 있는 직함의 이름과 직원의 수를 가져온다.
select * from titles;
select title, count(*)
from titles
group by title
having count(*) >= 100000;

-- 5만명 이상이 근무하고 있는 부서의 부서번호와 부서 소속 사원의 수를 가져온다.
select * from dept_emp;

select dept_no, count(*)
from dept_emp
group by dept_no
having count(*) >= 50000;

 

반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday