<목차>
ㅇ 그룹 함수
ㅇ 함수란?
SELECT AVG(받아들일 인수값의 컬럼이름), SUM(받아들일 인수값의 컬럼이름) MIN(받아들일 인수값의 컬럼이름), MAX(받아들일 인수값의 컬럼이름) FROM 컬럼을 소유한 테이블 WHERE 조건식
SELECT AVG(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%'
업무이름에 REP 있는 사람들의 급여 평균과 합을 구하여라.
SELECT MIN(salary), MAX(salary) FROM employees SQL> / MIN(SALARY) MAX(SALARY) ----------- ----------- 2100 24000
최저급여 / 최대급여
SELECT MIN(hire_date), MAX(hire_date) FROM employees SQL> / MIN(HIRE_DATE) MAX(HIRE_DATE) -------- -------- 01/01/13 08/04/21
가장 먼저 입사한 사원(가장 오래된) / 가장 마지막에 입사한 사원(가장 최근)
SELECT MIN(last_name), MAX(last_name) FROM employees SQL> / MIN(LAST_NAME) MAX(LAST_NAME) -------- -------- Abel Zlotkey
알파벳 순서 맨 앞 / 맨 뒤
AVG, SUM, MIN, MAX, COUNT(컬럼)은 NULL을 무시
COUNT(*)는 NULL 포함
실험 ) 평균 = 총합/사람수 인지 확인해보기 위해
SELECT AVG(commission_pct), SUM(commission_pct) FROM employees SQL> / AVG(COMMISSION_PCT) SUM(COMMISSION_PCT)/107 ------------------ ---------------------- .222857143 .072897196
- AVG : 보너스 받는 35명으로 나눈 것 (NULL 제외)
- SUM/107 : 보너스 안 받는 사람 포함한 전체 107명으로 나눈 것
SELECT AVG(NVL(commission_pct,0)), SUM(commission_pct)/107 FROM employees SQL> / AVG(NVL(COMMISSION_PCT,0)) SUM(COMMISSION_PCT)/107 -------------------------- ----------------------- .072897196 .072897196
SELECT COUNT( * ) FROM employees WHERE department_id = 50 SQL> / COUNT(*) ---------- 45
- 의미 : 50번 부서에 근무하는 사원의 수가 45명이다
SELECT COUNT(commission_pct) FROM employees SQL> / COUNT(COMMISSION_PCT) --------------------- 35
- 의미 : 보너스를 받는 사원의 수
SELECT COUNT(commission_pct) FROM employees WHERE department_id = 80 SQL> / COUNT(COMMISSION_PCT) --------------------- 34
- 의미 : 80번 부서에서 보너스 받는 수 : 34
- 와우! 전체 35명 중에서 34명이 이 부서에 있네..
이런 부서에서 일을 해야겠네 ㅋㅋ
SELECT COUNT(DISTINCT 컬럼) FROM 테이블
SELECT COUNT(department_id) FROM employees SQL> / COUNT(DEPARTMENT_ID) -------------------- 106
- 106개 : 중복되는 번호 다 나와
그래서 DISTINCT를 사용하면 중복이 제거되어 옳은 결과가 나와
SELECT COUNT(DISTINCT department_id) FROM employees SQL> / COUNT(DISTINCT DEPARTMENT_ID) ---------------------------- 11
SELECT DISTINCT COUNT(department_id) FROM employees SQL> / COUNT(DISTINCT DEPARTMENT_ID) ---------------------------- 106
- COUNT 결과를 중복제거 하라고 한 거라서 의미 없어
- 원래 COUNT 결과 그대로 나와