- 오라클 11g XE 버전입니다
- 오라클 샘플 계정 HR에 접속한 후 진행했습니다 ( 아래 참고 )
> https://hongdori2.tistory.com/4
0. 다중행 함수
지금까지는 테이블에서 원하는 복수의 컬럼들을 출력했지만
다중행 함수는 컬럼 중에서 원하는 행 1개만 가져오는 함수입니다.
1. sum, avg, max, min ,count
- 사용할때 : 함수( 컬럼 이름 )
sum : 총합계 ( 숫자만 )
avg : 평균 ( 숫자만 )
max : 최대값 ( 숫자, 문자, 날짜 )
min : 최솟값 ( 숫자, 문자, 날짜 )
count : 갯수 (숫자, 문자, 날짜 + null 포함 )
예시)
> 사람들의 평균 급여는 6461.83178 이다
2. group by
- SQL을 작성할 때 작성 순서입니다
select
from
where
group by
having
order by
> 부서별 총 급여를 알고 싶을 때
select department_id, sum(salary)
from employees;
라고 적으면 에러가 발생합니다. 왜냐하면 department_id는 복수의 행, sum(salary)는 1개의 행을 가지기 때문입니다
이럴 때 group by를 이용합니다.
> department_id 그룹 별로 급여의 합계를 출력할 수 있습니다
3. having
- SQL을 실행할 때 실행 순서입니다
from
where
group by
having
select
order by
위 예제에서 만약 부서의 급여가 50000 이상인 것만 출력하기 위해서
select department_id, sum(salary)
from employees
where sum(salary) >= 50000
group by department_id;
라고 적으면 에러가 발생합니다. 왜냐하면 where는 group by보다 먼저 동작하기 때문에 총합으로 더하기 전에 열을 걸러 버리기 때문입니다. 그렇기 때문에
> 다중행 함수의 조건문은 where가 아닌 having을 이용해 적어야 합니다. ( where 절은 개별 컬럼 하나하나에 적용 )
댓글