TITLE - Information & Database Systems

Download Report

Transcript TITLE - Information & Database Systems

Group Functions
CSED421: Database Systems Lab
TA: 이종욱, 유개원
Contents
 Group Functions

AVG / COUNT / MAX / MIN / SUM
 GROUP BY Phrase
 HAVING Phrase
 Practice
Page 2
Group Functions
 COUNT (* | [DISTINCT] column)
 MAX ([DISTINCT] column)
 MIN ([DISTINCT] column)
 SUM ([DISTINCT] column)
 AVG ([DISTINCT] column)
 NVL (column, 0)

Null 을 특정 값으로 대체한다

ex. AVG(NVL(discount, 0))
 SELECT Count(Job)
FROM EMP
GROUP BY Job
Page 3
GROUP BY Phrase
 SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY

column1
table
condition]
column2]
column3 [ASC|DESC]]
Column1에 가능한 컬럼
 column2
 Group Function이 적용된 column2 이외의 컬럼
Page 4
HAVING Phrase
 Group Function에 조건을 주기 위해 사용

SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY
column1
table
condition]
column2]
group_function_condition]
column3 [ASC|DESC]]

HAVING의 조건절에는
 Group Function을 적용한 컬럼이 사용 가능하다.
Page 5
HAVING Phrase
 Examples

SELECT
FROM
GROUP BY
HAVING
a, COUNT(c), SUM(c)
example
a
SUM(c)>20;

SELECT
FROM
GROUP BY
HAVING
a, b, SUM(c)
example
a, b
SUM(c)>10;

SELECT
FROM
GROUP BY
HAVING
a, COUNT(c) COUNT_C, SUM(c) SUM_C
example
a
SUM(c)>20;
Page 6
Practice
 EMP table & DEPT table

@emp.sql
직번
EMPNO
NUMBER(4)
ENAME
VARCHAR2(10) 이름
JOB
VARCHAR2(9)
직위
MGR
NUMBER(4)
상사 직번
HIREDATE
DATE
고용일
SAL
NUMBER(7, 2)
급여
COMM
NUMBER(7, 2)
추가 급여
DEPTNO
NUMBER(2)
부서번호
DEPTNO
NUMBER(2)
부서번호
DNAME
VARCHAR2(14)
부서명
LOC
VARCHAR2(13)
부서위치
Page 7
Page 8
Some Hints
 AS phrase 사용 방법

SELECT
FROM
GROUP BY
ORDER BY
sum(sal) sum_sal
EMP
sal
sum_sal;
 간단한 Join 방법

SELECT
FROM
WHERE
E.ename, D.dname
Emp E, Dept D
E.deptno = D.deptno;
 NULL 조건을 체크 하기 위한 방법

SELECT
FROM
WHERE
E.ename
EMP
mgr is [not] null;
Page 9
Practice
 1. EMP 테이블에서 각 직원들의 총 급여를 검색하시오.

이름, 직위, 총 급여를 출력하시오.

총 급여는 기본 급여 및 추가
급여를 합한다.

추가 급여는 기본값이 0원이다.

결과순서는 총 급여의 내림차순
으로 출력하시오
Page 10
Practice
 2. EMP 테이블에서 각 부서명 별로 몇 명의 사람이 있는지를 검색하
시오.

결과는 부서명과 사람수를 출력한다.
 3. EMP 테이블에서 관리자가 있는 사람들에 대해서 각 부서별로 몇
명의 사람이 있는지 검색하시오.

결과는 부서번호와 사람수를 출력한다.

결과 순서는 부서번호의 오름 차순으로 출력한다.
Page 11
Practice
 4. EMP 테이블에서 부서별 평균 급여를 검색하시오.

부서번호와 평균 급여를 출력한다.

평균 급여의 내림차순으로 출력한다.
Page 12
Practice
 5. EMP 테이블에서 부서별, 직위 별 급여의 합을 검색하시오.

부서번호, 직위, 급여의 합, 해당되는 직원 수를 출력한다.

직위별 급여의 합의 내림차순으로 출력한다.
Page 13
Practice
 6. 직위별 직원수가 3명 이상인 직위별 평균 급여를 검색하시오.

직위, 급여의 합, 해당되는 직원 수, 평균 급여를 출력한다.

직위별 급여의 합의 내림차순으로 출력한다.
Page 14
Practice
 7. EMP 테이블에서 관리자의 직번과 관리자가 관리하는 사원들의
평균 급여를 검색하시오.

관리자 직번, 관리 사원들의 급여의 합, 관리 사원들의 수, 관리 사원들
의 평균 급여를 출력한다.

결과 순서는 평균 급여의 내림차순으로 출력하시오.
Page 15
Practice
 8. EMP 테이블에서 관리자의 직번과 관리자가 관리하는 사원 수가
2명 이상인 경우에 대해서 총 급여의 평균급여를 검색하시오.

총 급여는 기본 급여 및 추가 급여를 합한다.

추가 급여는 기본값이 0원이다.

관리자 직번, 관리 사원들의 급여의 합, 관리 사원들의 수, 관리 사원들
의 평균 급여를 출력한다.

결과 순서는 평균 총 급여의 내림차순으로 출력하시오.
Page 16