반응형
개념
- 한 테이블의 데이터들을 특정 컬럼을 기준으로 그룹화하고 각 그룹 내의 데이터에 대하여 집계처리(합계, 평 군, 개수, 최댓값, 최솟값)
- SUM, AVG, COUNT, MIN, MAX, 등 정도로 나눠서 볼 수 있다.
- SELECT 절에 집계 함수와 일반컬럼이 같이 사용되면 반드시 GROUP BY 절이 기술되어야 함 --일반컬럼이 기준이 되어서 그룹을 만든다.
- 사용 형식
SELECT [컬럼명1,..,..N] SUM(컬럼명)|COUNT(*|컬럼명)|AVG(컬럼명)|MAX(컬럼명)|MIN(컬럼명) FROM 테이블명 [WHERE 조건] [GROUP BY 컬럼명1,..N] [HAVING 조건] [ORDER BY 컬러명|컬럼인덱스];
더보기
- SELECT 절에서 '[컬럼명1,..,]'이 생략되면 GROUP BY절이 필요 없음(테이블 전체가 하나의 그룹)
- '[GROUP BY 컬럼명1,..]' 에 기술되는 컬럼명은 SELECT절에서 사용된 집계함수 이외의 컬럼명을 기술하고 필요에 따라 SELECT절에서 기술하지 않은 컬럼도 기술 가능
- 'GROUP BY' 다음에 기술되는 컬럼의 순서는 그룹핑 되는 순서임
- '[HAVING 조건]' : 집계함수 자체에 조건이 부여된 경우 사용
1. SUM(column)
- 'column'에 저장된 각 그룹별 합계를 구하여 반환 예) 사원 테이블에서 전체 사원들의 급여 합계를 구하시오 SELECT SUM(SALARY) FROM EMPLOYEES;
- 예시)
예)사원테이블에서 각 부서별 평균 급여를 소수 1자리까지 구하시오 SELECT DEPARTMENT_ID AS 부서코드, -- EMP_NAME AS 사원이름, ROUND(AVG(SALARY),1) FROM EMPLOYEES GROUP BY DEPARTMENT_ID --EMP_NAME ORDER BY DESC;
2. COUNT(*|column)
- 그룹으로 묶인 각 그룹에 포함된 자료 수(행의 수)
- 외부 조인에 COUNT함수를 사용할 경우 '*' 대신 컬럼명을 사용해야 함
- 예시)
예)사원테이블에서 각 부서별 인원수를 구하시오 SELECT DEPARTMENT_ID AS 부서코드, COUNT(*) AS 인원수, COUNT(EMP_NAME) AS 사원수 FROM EMPLOYEES GROUP BY DEPARTMENT_ID ORDER BY DESC;
3. AVG(column)
- 'column'을 기준으로 그룹으로 묶인 집단에 대한 평균값 반환
- 예시)
예)사원테이블에서 각 부서별 평균 급여를 소수 1자리까지 구하시오 SELECT DEPARTMENT_ID AS 부서코드, -- EMP_NAME AS 사원이름, ROUND(AVG(SALARY),1) FROM EMPLOYEES GROUP BY DEPARTMENT_ID --EMP_NAME ORDER BY DESC;
4. MAX(column), MIN(column)
- 'coloumn'으로 기술 컬럼에 저장된 값 중 최댓값과 최솟값을 구하여 반환
- 내부적으로 계산하는 방식은 'column'을 기준으로 오름차순 정렬(MIN), 또는 내림차순 정렬 후 그중 첫 번째 행의 값을 반환 따라서 처리시간이 다소 많이 소요됨
- ** 의사컬럼 ROWNUM
- 쿼리 결과(뷰)의 각행에 부여된 순번 값
- 상위 5개 또는 하위 5개 등 필요한 개수의 결과만을 출력할 때 사용(다른 DBMS에서는 TOP 함수로 제공됨)
- 예시)
예)회원의 마일리지 중 최대마일리지 값을 구하시오 SELECT MAX(MEM_MILEAGE) FROM MEMBER; SELECT MEM_MILEAGE FROM MEMBER ORDER BY DESC;
반응형
'ORACLE DB > 기초' 카테고리의 다른 글
SQLD 공부 정리 (1. 데이터 모델링 이해) (3) | 2022.01.18 |
---|---|
MYSQL DAO(DTO) 변수 한번에 만들기(Mysql to Java 자료형) (0) | 2021.10.06 |
PL/SQL 개념과 사용법 프록시저 사용법(OracleDB 기초) (0) | 2021.09.09 |
오라클 DB의 여러가지 데이터타입(문자열,숫자,날짜,2진자료형) (0) | 2021.07.24 |