22.05.24~22.11.16/7月
07-13 <Oracle> : 집계함수
10월의끝
2022. 7. 13. 13:57
select 칼럼명
from 테이블명
where 조건식
group by 칼럼표현식
having 그룹조건식
order by 칼럼이나 표현식
1. 발췌 대상 테이블을 참조한다 (from)
2. 발췌 대상 데이터가 아닌 것은 제거한다 (where)
3. 행들을 소그룹화 한다. (group by)
4. 그룹핑된 값의 조건에 맞는 것만을 출력한다. (having)
5. 데이터 값을 출력계산한다. (select)
6. 데이터를 정렬한다. (order by)
count distinct
select count (DISTINCT department_id)
from employees
->
COUNT(DISTINCTDEPARTMENT_ID)
----------------------------
11
=> count distinct를 사용하면 부서의 개수를 쉽게 확인할 수 있다.
having절
select department_id, max(salary)
from employees
group by department_id
having max(salary) >= 10000;
=> having절을 사용하면 조건을 줄 수 있다.
예시는 부서별 최고급여 중 10000 이상인 부서를 선택
(예제1)
부서별 급여 합계, 급여 평균, 최고 급여, 최저급여를 조회하고
급여를 세자리수로 나타내어 $표시가 나오게 출력하시오.
select department_id,
to_char(sum(salary), '$999,999,00'),
to_char(avg(salary), '$999,999,00'),
to_char(max(salary), '$999,999,00'),
to_char(min(salary), '$999,999,00')
from employees
where department_id is not null
group by department_id
(예제2)
사원들의 업무별 전체 급여 평균이 $10,000보다 큰 경우를 조회하여 업무, 급여 평균을 출력하시오.
단, 업무에 사원(CLEAK)이 포함된 경우는 제외하고 전체 급여 평균이 높은 순서대로 출력하시오.
select job_id, avg(salary)
from employees
where job_id not like '%CLEAK%'
group by job_id
having avg(salary) > 10000
order by avg(salary)
=> where절의 위치는 항상 from 뒤에 온다.
포함은 where 조건 like '%조건%' 으로 작성