반응형
GROUP BY
1. GROUP BY 절은 데이터들을 원하는 그룹으로 나눌 수 있다.
2. 개체 수준의 데이터를 그룹 수준으로 만들 수 있다.
3. 예제 - EMP 테이블에서 부서번호, 사원수를 조회하고 부서번호 별로 묶어라.
SELECT DEPTNO, COUNT(EMPNO)
FROM EMP
GROUP BY DEPTNO;
집계함수는 WHERE 절에 사용불가
1. SQL 연산 순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
2. 집계함수는 WHERE 절에 올 수 없다. GROUP BY 절보다 WHERE절이 먼저 수행되기 때문이다.
3. 예제
-- 각 부서별 사원들의 급여 평균을 구하라
SELECT DEPTNO, AVG(SAL)
FROM EMP
GROUP BY DEPTNO;
-- 각 직무별 사원들의 급여 총합을 구하라
SELECT JOB, SUM(SAL)
FROM EMP
GROUP BY JOB;
-- 1500이상 급여를 받는 사원들의 부서별 급여 평균을 구해라.
SELECT DECODE(DEPTNO, 10, '인사과', 20, '영업과', 30, '생산과'), AVG(SAL)
FROM EMP
WHERE SAL >= 1500
GROUP BY DEPTNO;
-- 각 직장 상사별 사원들의 총 수를 구하라.
SELECT MGR, COUNT(EMPNO)
FROM EMP
GROUP BY MGR;
예제 마지막 문제에서 MGR이 뜻하는 것은 '관리자'다. MANAGER라고 이해하자.
집계함수 ORDER BY에 사용 가능
1. 앞에 나온 SQL 연산 순서에 의해 ORDER BY는 마지막에 연산된다. 집계함수 사용 가능하다.
2. 예제
-- EMP에서 부서 별로 그룹화 하고, 각 부서별 최대 사원 급여를 기준 오름차순 정렬
SELECT DEPTNO, MAX(SAL)
FROM EMP
GROUP BY DEPTNO
ORDER BY MAX(SAL) ASC;
GROUP BY에서 NULL 사용 가능
1. NULL도 하나의 그룹으로 인식하여 구분된다.
2. 예제
-- EMP에서 커미션 별로 그룹화
SELECT COMM, COUNT(*)
FROM EMP
GROUP BY COMM;
GROUP BY에서 두 개 이상의 컬럼을 작성하는 경우
1. 두 개 이상의 컬럼을 작성할 수 있다. 두 조건에 맞는 결과가 나온다.
2. 예제
SELECT DEPTNO, ENAME, SUM(SAL)
FROM EMP
GROUP BY DEPTNO, ENAME;
반응형
'DB' 카테고리의 다른 글
[SQLD] COL1 BETWEEN A and B (0) | 2023.08.23 |
---|---|
[SQLD] SQLD 개발자 자격시험(총 50문항) 대비 기출문제 (1) (0) | 2023.08.20 |
[SQLD] 집계함수 (SUM, AVG, COUNT, MAX, MIN) (0) | 2023.08.12 |
[SQLD] ORDER BY. SELECT 문으로 얻어온 데이터를 정렬해보자. (0) | 2023.08.11 |
[SQLD] NULL이란 무엇인가? (0) | 2023.08.11 |