본문 바로가기

Mysql/Mysql 기초

mysql 그룹함수

반응형

 그룹 함수 

 조건에 맞는 로우의 컬럼에 대해 집계 값을 가져오는 함수

 COUNT(컬럼명) 가져온 로우의 개수를 반환한다

 SUM(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값의 총합을 구한다

 AVG(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값의 평균을 구한다 

 MAX(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값 중 최대 값을 가져온다

 MIN(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값 중 최소 값을 가져온다

-- 그룹 함수 

-- 조건에 맞는 로우의 컬럼에 대해 집계 값을 가져오는 함수

-- COUNT(컬럼명) 가져온 로우의 개수를 반환한다

-- SUM(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값의 총합을 구한다

-- AVG(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값의 평균을 구한다 

-- MAX(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값 중 최대 값을 가져온다

-- MIN(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값 중 최소 값을 가져온다


-- 사원의 수를 구한다 
select count(emp_no)
from employees;

-- 남자 사원의 수를 구한다 
select count(emp_no)
from employees
where gender = 'M';
-- 현재 d005 부서에 근무하고있는 사원들의 수를 구한다 
-- to_date 컬럼이 9999-01-01인 사원들이 현재 근무하고있는 사원이다
select count(emp_no)
from dept_manager
where dept_no = 'd005' and to_date = '9999-01-01';
-- 현재 받고 있는 급여의 총합을 구한다
select sum(salary)
from salaries
where to_date = '9999-01-01';
-- 현재 받고 있는 급여의 평균을 구한다 
select avg(salary)
from salaries
where to_date = '9999-01-01';

-- 현재 받고 있는 급여의 최대 급여액을 구한다 
select max(salary)
from salaries
where to_date = '9999-01-01';

-- 현재 받고 있는 급여의 최저 급여액을 구한다 
 select min(salary)
from salaries
where to_date = '9999-01-01';

 

GROUP BY, HAVING

 

그룹 함수를 사용하면 로우의 수, 총합, 평균, 최대, 최저값을 가져올 수 있다
 group by 절은 select무을 통해 가져온 모든 로우를 개발자가 정한 기준에 따라 그룹으로 나눌수 있다
 group by 절을 이용해 그룹으로 나눈 후 그룹 함수를 사용하면 각 그내에서 로우의 수, 총합, 최대, 최저값을 구할 수있다
 group by 절을 이용하여 개발자가 정한기준으로 그룹을 나눈후 having 절로 만든 조건에 맞는 그룹의 데이터만 가져올 수 있다.

-- 그룹 함수를 사용하면 로우의 수, 총합, 평균, 최대, 최저값을 가져올 수 있다
-- group by 절은 select무을 통해 가져온 모든 로우를 개발자가 정한 기준에 따라 그룹으로 나눌수 있다
-- group by 절을 이용해 그룹으로 나눈 후 그룹 함수를 사용하면 각 그내에서 로우의 수, 총합, 최대, 최저값을 구할 수있다
-- group by 절을 이용하여 개발자가 정한기준으로 그룹을 나눈후 having 절로 만든 조건에 맞는 그룹의 데이터만 가져올 수 있다.
-- 10만명 이상이 사용하고 있는 직함의 이름과 지원의 수를 가지고 온다
-- 5만명 이상 근무하고 이는 부서의 부서 번호와 부서 소속 사원의 수를 가져온다

 --  사원의 수를 성별로 가져온다
 select count(*), gender from employees group by gender;
--  각 부서에 근무하고 있는 사원들의 수를 가져온다
select dept_no, count(*) from dept_emp where to_date = '9999-01-01' group by dept_no;
--  각 부서별 과거의 매니저의 수를 구한다
select  dept_no, count(*) from dept_manager where not to_date = '9999-01-01' group by dept_no;
--  급여 수령 시작일별 급여 총합을 구한다
select sum(salary), from_date from salaries group by from_date;
--  급여 수령 시작일별 급여 평균을 구한다
select avg(salary), from_date from salaries group by from_date;
--  급여 수령 시작일 별 급여 최고액을 구한다
select max(salary), from_date from salaries group by from_date;
--  급여 수령 시작일 별 급여 최저액을 구한다
select min(salary), from_date from salaries group by from_date;

-- group by 활용하기 
-- 10만명 이상이 사용하고있는 직함의 이름과 직원의 수
select count(*), title from  titles group by title having count(*) >= 100000;
-- 5만명 이상 근무하고있는 부서의 부서 번호와 부서 소속 사원의 수를 가져온다 
select count(*), dept_no from dept_emp group by dept_no having count(*) >= 50000;

 

 

 

반응형

'Mysql > Mysql 기초' 카테고리의 다른 글

mysql 서브쿼리  (0) 2020.07.09
mysql join  (0) 2020.07.09
mysql 기초 날짜 함수  (0) 2020.07.09
mysql 문자열함수  (0) 2020.07.09
mysql 숫자 함수  (0) 2020.07.09