티스토리 뷰
문법
1 2 3 4 5 6 | SELECT column, group_junction FROM table [WHERE condition] [GROUP BY group__by_expression] [HAVING group_condition] [ORDER BY column]; | cs |
1. 그룹함수
AVG(평균, 인수는 무조건 숫자만)
COUNT(행의 개수 카운트, NULL값 제외해서 COUNT 함)
MAX(최대값, 모든 데이터 타입 가능)
MIN(최소값, 모든 데이터 타입 가능)
STDDEV(표준편차)
SUM(합계)
VARIANCE(분산)
count(*) : NULL 값 포함
count(expr) : null값 X, 중복값 O
count(distinct expr) : null값 X, 중복값 X
1 2 3 | SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%'; | cs |
1 2 3 | SELECT COUNT(commission_pct) FROM mployees WHERE department_id = 80; | cs |
1 2 3 4 5 | SELECT count(*) FROM employees WHERE employee_id = 80; -- 모든 컬럼 기준 -- null 값이 있어도 count | cs |
1 2 3 4 | SELECT count(commission_pct) FROM employees WHERE employee_id = 80; -- 특정 칼럼 기준일 때는 null 값 제외해서 count | cs |
1 2 3 4 5 | SELECT count(department_id) FROM employees; -- 사원이 소속된 부서의 수를 구하라 -- 중복된 값도 count -- null 값 제외 | cs |
1 2 3 4 | SELECT count(distinct department_id) FROM employees; -- null 값 제외 -- 중복된 값도 제외해서 count | cs |
2. GROUP BY 절
1 2 | SELECT department_id, AVG(salary) FROM employees; | cs |
주의할 점
SELECT 절에 있는 column(컬럼) 리스트들 중에서 그룹함수에 포함되어있는 컬럼과 그룹함수에 포하되어있지않는 컬럼이 같이 디스플레이 될려면 적어도 그룹 함수에 포함되지 않는 컬럼을 GROUP BY 절에 포함되어있어야 오류가 발생하지않는다.
1 2 3 | SELECT department_id, AVG(salary) FROM employees GROUP BY department_id; | cs |
1 2 3 4 | SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id > 40 ORDER BY department_id; | cs |
1 2 3 4 5 | SELECT department_id, job_id, SUM(salary) FROM employees WHERE department_id > 40 GROUP BY department_id, job_id ORDER BY department_id; | cs |
1 2 3 | SELECT department_id, job_id, AVG(salary) FROM employees GROUP BY department_id; | cs |
1 2 3 | SELECT department_id, job_id, AVG(salary) FROM employees GROUP BY department_id, job_id; | cs |
1 2 | SELECT department_id, COUNT(last_name) FROM employees; | cs |
1 2 3 | SELECT department_id, COUNT(last_name) FROM employees GROUP BY department_id; | cs |
1 2 3 | SELECT department_id, job_id, COUNT(last_name) FROM employees GROUP BY department_id; | cs |
1 2 3 | SELECT department_id, job_id, COUNT(last_name) FROM employees GROUP BY department_id, job_id; | cs |
3. HAVING 절
행 그룹제한 조건은 WHERE 절
1 2 3 4 5 6 | SELECT job_id, SUM(salary) PAYROLL FROM employees WHERE job_id NOT LIKE '%REP%' GROUP BY job_id HAVING SUM(salary) > 13000 ORDER BY SUM(salary); | cs |
연습문제
1. employees 테이블로부터 업무(job_id)별 최대 급여(Maximum), 최소 급여(Minimum), 급여의 합계(Sum), 평균 급여(Average)를 출력하시오
1 2 3 4 5 6 7 | SELECT job_id, MAX(salary) "Maximum" MIN(salary) "Minimum", SUM(salary) "Sum", AVG(salary) "Average" FROM employees GROUP BY jo_id; | cs |
2. employees 테이블로부터 매니저를 알 수 없는 사원은 제외하고 매니저별로 그룹화하여 매니저별 최소 급여를 출력하되 최소 급여를 기준으로 내림차순으로 정렬하여 출력하시오. ( 최소 급여가 600 이상인 그룹만 출력)
1 2 3 4 5 6 | SELECT manager_id, MIN(salary) FROM employees WHERE manager_id IS NOT NULL GROUP BY manager_id HAVING MIN(salary) >= 6000 ORDER BY MIN(salary) DESC; | cs |
'부산 ITWILL 학원 실습 > ORACLE' 카테고리의 다른 글
[SQL 활용] 5. Subquery (0) | 2018.07.27 |
---|---|
[SQL 활용] 4. JOIN (0) | 2018.07.27 |
[Oracle VM VirtualBox] 외부 화면(바탕화면)으로 나가기 (0) | 2018.07.27 |
[SQL 활용] 2. WHERE(조건문)절과 ORDER BY(정렬)절 (0) | 2018.07.27 |
[SQL 활용] 1. SELECT 구문을 사용한 데이터 검색 (0) | 2018.07.26 |