1. group by
동일한 그룹의 데이터에서 통계자료를 구할때 사용됩니다. 그동안 우리가 작업했던 select문은 기본적으로 모든 레코드에 대한 결과를 보여줍니다. 만약 부서별이나, 직업별, 성별별 자료를 구하고 싶은 경우 먼저 구하고 싶은 그룹을 묶어주고 그렇게 묶어준 데이터에 함수를 적용하여 작업을 해야 할 것입니다. 지금까지 살펴보았던 함수는 단일행 함수로 모든 행마다 적용되어 실행되는 함수였고 그룹으로 묶어준 데이터에 적용하는 함수는 그룹함수라 부릅니다. 그룹함수의 종류는 다음과 같습니다.
sum(컬럼명) |
그룹별 총합을 구합니다. |
avg(컬럼명) |
그룹별 평균값을 구합니다. |
max(컬럼명) |
그룹안에 속한 값들 중 최대값을 구합니다. |
min(컬럼명) |
그룹안에 속한 값들 중 최소값을 구합니다. |
count(컬럼명), count(*) |
그룹안에 속한 값들의 개수를 세어줍니다. count(*) : 모든 레코드의 개수를 세어줍니다. count(컬럼명) : 해당 컬럼에 값이 있는 경우만 세어줍니다. |
1) 그룹함수를 사용할 경우 주의할 사항
where절은 모든 행별로 조건을 검색하므로 그룹함수의 속성과 어울리지 않습니다. 따라서 where절에서는 그룹함수를 사용할 수 없습니다. where절에 사용하는 경우 다음과 같이 에러메시지가 나타납니다.
select절에 일반 컬럼과 그룹함수를 같이 쓸 수 없습니다. 일반 컬럼은 모든 레코드 수별로 출력되려고 하지만 그룹함수는 그룹별 작업하려 하므로 같이 쓸 수 없습니다. 단, group by를 적용하여 group으로 묶기 위해 사용한 컬럼은 사용할 수 있습니다. select절에 일반컬럼과 같이 사용하면 다음과 같이 에러메시지가 나타납니다.
2) group by적용
그룹으로 묶어주는 방법은 다음과 같습니다.
select 컬럼명, 그룹함수 ---------------------------- ①
from 테이블명
group by 컬럼명 ---------------------------- ②
① 에 해당하는 컬럼은 반드시 group by에 명시된 컬럼이어야 하며 다른 일반 컬럼을 적용하면
에러가 발생합니다.
②에 해당하는 컬럼은 그룹으로 묶어주고 싶은 컬럼을 명시합니다.
ex)부서별 평균 급여구하기
3) 여러 개의 컬럼으로 group by적용하기
상위그룹과 하위그룹이 존재하는 경우 group by를 적용해서 표현할 컬럼이 여러 개 존재하는 경우가 있습니다. 이렇게 여러 개 존재하는 경우 group by절에 컬럼을 여러개 명시하여 주면 됩니다.
select 컬럼1,컬럼2, 그룹함수
from 테이블명
group by 컬럼1,컬럼2
ex) 각 부서별로 직업별 인원수를 구하기
==> 이때 부서별로 모아주어야 확인하기 편하므로 반드시 order by절을 이용하여 정렬합니다.
'데이터베이스 > 오라클' 카테고리의 다른 글
한꺼번에 여러 개의 행을 insert하기 (0) | 2019.09.03 |
---|---|
오라클 데이터 가져오기 내보내기 (0) | 2019.06.25 |
having절 (0) | 2019.06.25 |
sysdate에서 시간 데이터 추출하기 (0) | 2019.06.25 |
scott계정생성과 권한 부여하기 (0) | 2019.06.18 |