
집계 함수

- 전체 테이블에서 각각의 행을 그룹화 하여 데이터 추출 가능.

COUNT
SELECT ROUND(AVG(salary)) 평균값, MAX(salary) 최고월급, MIN(salary) 최소값,
SUM(Salary) 합계, COUNT(salary)
FROM employees
WHERE job_id LIKE 'IT_PROG';
SELECT * FROM employees where job_id = 'IT_PROG';
SELECT COUNT(commission_pct)
FROM employees;
SELECT COUNT(*)
FROM employees;
SELECT COUNT(commission_pct), AVG(commission_pct)
From employees;
GROUP BY
SELECT department_id 부서명, ROUND(AVG(salary)) 평균급여,
COUNT(*) 직원수,
TO_CHAR(ROUND(AVG(salary)), '$99,999') 달러표시
FROM employees
GROUP BY department_id
Order By department_id;

SELECT department_id 부서이름, Count(*)사원수, MAX(salary) 최대급여, MIN(salary) 최소급여, SUM(salary) 급여합계, ROUND(AVG(salary)) 평균급여
FROM employees
GROUP BY department_id
ORDER BY SUM(salary) DESC;
SELECT department_id 부서이름, job_id 직업이름, SUM(salary) 급여합, Count(*) 직원수
FROM employees
GROUP BY department_id, job_id
Order By department_id;
SELECT ROUND(AVG(MAX(salary))) 최대, ROUND(AVG(MIN(salary))) 최소
FROM employees
GROUP BY department_id ;
HAVING (그룹별 조건)
- WHERE 절에서는 집계함수를 사용 할 수 없다.
- HAVING 절은 집계함수를 가지고 조건비교를 할 때 사용한다.
- HAVING절은 GROUP BY절과 함께 사용이 된다.
SELECT department_id 부서명, COUNT(*) 사원수
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;

SELECT job_id 직종, SUM(salary) 급여합
FROM employees
WHERE job_id !='AC_MGR'
GROUP BY job_id
HAVING AVG(salary) > 10000
ORDER BY SUM(salary) DESC;
SELECT department_id 부서, Round(AVG(salary)) 급여합
FROM employees
WHERE department_id != 40
GROUP BY department_id
HAVING AVG(salary) <= 7000
ORDER BY AVG(salary)DESC;
SELECT job_id 직종, SUM(salary) 급여합
FROM employees
WHERE job_id NOT Like '%REP%'
GROUP BY job_id
HAVING SUM(salary) >= 13000
ORDER BY SUM(salary)DESC