2022.09.06
-- 4.selectGroupFunction.sql
-- 그룹함수란?
/* 기본 문법
1. select절
2. from 절
3. where절
-- 1. count() : 개수 확인 함수
-- emp table의 직원이 몇명?
-- ? comm 받는 직원 수만 검색
-- 2. sum() : 합계 함수
-- ? 모든 사원의 월급여(sal)의 합
-- ? 모든 직원이 받는 comm 합
-- ? MANAGER인 직원들의 월급여의 합
-- ? job 종류 counting[절대 중복 불가 = distinct]
-- 데이터 job 확인
-- 3. avg() : 평균
-- ? emp table의 모든 직원들의 급여 평균 검색
-- ? 커미션 받는 사원수, 총 커미션 합, 평균 구하기
-- 4. max(), min() : 최대값, 최소값
-- 숫자, date 타입에 사용 가능
-- 최대 급여, 최소 급여 검색
-- ? 최근 입사한 사원의 입사일과, 가장 오래된 사원의 입사일 검색
-- max(), min() 함수 사용해 보기
-- 오늘로부터 입사한지 가장 오래된 일수 계산?
-- **
/ group by절
-- 부서별 커미션 받는 사원수
-- step01 : 완성된 기본 문장
-- step02 : deptno라는 부서 번호를 오름차순으로 정렬
-- step03 : 사원명도 검색
-- ? 부서별(group by deptno) (월급여) 평균 구함(avg())
-- ? 소속 부서별 급여 총액과 평균 급여 검색[deptno 오름차순 정렬]
-- ? 소속 부서별 최대 급여와 최소 급여 검색[deptno 오름차순 정렬]
-- 컬럼명 별칭에 여백 포함한 문구를 사용하기 위해서는 쌍따옴표로만 처리
-- having절 [ 조건을 주고 검색하기 ]
-- 그룹함수 사용시 조건문
-- 1. ? 부서별(group by) 사원의 수(count(*))와 커미션(count(comm)) 받는 사원의 수
-- 조건 추가
-- 2. ? 부서별 그룹을 지은후(group by deptno),
-- 부서별 평균 급여(avg())가 2000 이상인 부서의 번호와 평균 급여 검색
-- step01 : having 절 연습
-- step02 : deptno 로 정렬
-- step03 : avg(sal) 평균급여라는 별칭 부여, 평균 급여로 정렬
-- 3. 부서별 급여중 최대값(max)과 최소값(min)을 구하되 최대 급여가 2900이상(having)인 부서만 출력
-- rollup : 중간 합계 with rollup구문 사용되는
select ename
from emp
union
select deptno
from dept;
select ename
from emp
union all
select deptno
from dept;
select ename
from emp
union all
select ename
from emp;