반응형
Group By절
테이블의 전체 데이터를 특정 데이터 기준으로 그룹화 하는 것이 Group By절이다.
부서별 인원수 계산, 학기별 총점이나 평균, 월별 판매 현황, 분기별 판매 현황 등
복수 행을 그룹으로 처리하는 경우에 쓰인다.
- Group By절은 From절에 기술된 테이블의 칼럼들을 이용하여 그룹화 할 칼럼명을 기술하며 이 칼럼의 데이터를 그룹화 하여 중간 결과 테이블을 생성한다.
- Having절은 Group by절에 대하여 검색 조건을 지정한다.
Group by절을 이용한 SQL문
SELECT 컬럼명1, 컬럼명2, 리터럴 함수, 수식
FROM 테이블명1, 테이블명2
WHERE 검색조건1
Group by 컬럼명1, 컬럼명2
Having 검색조건2
Order by 컬럼명1, 컬럼명2
그룹 함수
- 복수 행을 처리하여 오직 한 행의 결과 값을 반환한다. 이때 널 값은 계산에서 제외된다.
- 두 번까지 중첩 가능하다. Ex) Max(Avg(salary)
그룹함수의 종류
- Count(칼럼명) : 테이블의 모든 행의 수를 반환
select count(department_id) : 사원이 배정되어 있는 행의 수
- Count(*) : 칼럼의 널 값을 제외한 행의 수를 반환
select count(*) where department_id =50 : 부서명이 50인 모든 행
- Count(Distinct expr) : 중복되지 않는 (널이 아닌) 값의 수를 반환
select count(distinct department_id) : 부서명이 중복되지 않은 행의 수
SELECT distinct - 전체적 중복값 제거 & Count(distinct expr) - 별도 제거
- Max(칼럼명) : 칼럼 값에서 최대값을 반환 (모든 데이터 유형)
- Min(칼럼명) : 칼럼 값에서 최소값을 반환 (모든 데이터 유형)
- Sum(칼럼명) : 칼럼 값의 합계를 반환 (숫자 데이터)
- Avg(칼럼명) : 칼럼 값의 평균을 반환 (숫자 데이터)
- Stddev(칼럼명) : 칼럼 값의 표준편차를 반환
- Variance(칼럼명) : 칼럼 값의 분산을 반환
고려사항
- 칼럼의 널 값은 계산에서 제외
- 그룹 함수(NVL(칼럼명, 대체값)) : NVL함수는 널 값을 포함하도록 강제로 지정
- 행의 수와 관계없이 단 하나의 행만 반환
- 그룹 함수는 단일 칼럼과 함께 사용할 수 없다. 단, Group by절에 기술된 칼럼과는 같이 사용할 수 있다.
- Where절을 사용하면 검색 조건의 참이 되는 행에 대하여 계산한다.
지침
- SELECT 목록의 열 중 그룹 함수에 없는 열은 모두 Group By절에 포함되어야 한다.
SELECT department_id, avg(salary), From employees Group by department_id
- Group By절에 있는 열을 SELECT절에 없어도 된다.
SELECT avg(salary) From employees Group by department_id
- Group By절에 별명을 사용할 수 없다.
- Order By절에 그룹함수를 사용할 수 있다.
SELECT department_id, avg(salary), From employees Group by department_id Order by avg(salary)
- 하나 이상의 Group by 열을 나열하여 그룹 및 하위 그룹에 대한 요약 결과 반환가능하며 열 순서에 따라 결과의 기본 정렬 순서를 결정할 수 있다.
그룹의 조건 Having
WHERE절은 행에 대한 조건을 세우지만 Having절은 그룹에 대한 조건을 세운다.
반응형
'Oracle' 카테고리의 다른 글
Oracle 문제 풀이 리뷰) (0) | 2022.08.15 |
---|---|
Oracle Review : DCL/DDL/DML/TCL 정의 및 종류 (0) | 2022.08.07 |
Oracle Review : Join / 등가 조인 / 외부 조인 / 자가 조인 (0) | 2022.08.07 |
Oracle Review : 서브 쿼리 (0) | 2022.07.23 |
댓글