SQL기초강좌
집합함수 (2)
(Aggreation Function)
SQL기초강좌_집합함수(Aggreation Function)
집합함수
COUNT({* | [DISTINCT|ALL] expr}) :
추출된 행(ROW)수를 반환한다.
DISTINCT를 사용 했다면 중복된 행을 제거한 행수를 반환하고 , expr을 사용했다면
expr이 NOT NULL인 행의 수를 반환한다. ASTERISK(*)는 중복 과 NULL을 포함한 모든
행의 수를 반환 할 때 사용한다.
SQL> select name, sal, buseo from sawon;
NAME SAL BUSEO
---------- ---------- ----------
가길동 2000000 영업부
나길동 3000000 영업부
다길동 영업부
라길동 1000000 관리부
마길동 2000000 관리부
--“다길동” 사원은 sal를 등록하지 않았으니 NULL 임을 기억하자.
SQL기초강좌_집합함수(Aggreation Function)
집합함수
SQL> select count(sal) from sawon;
COUNT(SAL)
---------------
4
SQL> select count(distinct sal) from sawon;
COUNT(DISTINCTSAL)
----------------------
3
--아래의 ASTERISK(*)는 결국 테이블등의 전체 건수를 파악 할 때 자주 사용 된다.
SQL> select count(*) from sawon;
COUNT(*)
----------
5
SQL기초강좌_집합함수(Aggreation Function)
집합함수
--다음 예문은 부서별로 인원 수를 출력 하는 예문이다.
SQL> select buseo, count(buseo)||'명' from sawon
2 group by buseo;
BUSEO COUNT(BUSEO)||'명'
---------- -----------------------------------------
관리부 2명
영업부 3명
SQL기초강좌_집합함수(Aggreation Function)
집합함수
--각 직무별로 최대급여와 인원수를 구하되 직무별 인원수가 2명 이상인 직무
만 나타내는 예문이다. (평균급여의 소수점 이하는 반올림)
SQL> select job "직무", round(max(sal)) "최대 급여", count(*) "인원수"
2 from emp
3 group by job
4 having count(*)>2;
직무 최대 급여 인원수
--------- ----------- ----------
CLERK 1300 4
MANAGER 2975 3
SALESMAN 1600 4
SQL기초강좌_집합함수(Aggreation Function)
집합함수
-- 사원이 3명이상인 JOB에 대해 JOB별 평균급여를 계산하시오.
SQL> select job, avg(sal) from emp
2 group by job
3 having count(*) > 3;
JOB AVG(SAL)
--------- ----------
CLERK 1037.5
SALESMAN 1400
SQL기초강좌_집합함수(Aggreation Function)
집합함수
--아래는 sawon 테이블에서 부서별로 급여의 최대, 최소값을 구하는 예문이다.
SQL> select buseo, max(sal) from sawon
2 group by buseo;
BUSEO MAX(SAL)
---------- ----------
관리부 2000000
영업부 3000000
SQL기초강좌_집합함수(Aggreation Function)
집합함수
MAX, MIN함수는 숫자, 문자, 날짜 등 어떠한 자료형 이라도 사용이 가능하다.
MAX([DISTINCT|ALL] expr) : 최대값을 반환한다.
MIN([DISTINCT|ALL] expr) : 최소값을 반환한다.
--아래는 sawon 테이블에서 부서별로 급여의 최대, 최소값을 구하는 예문이다.
SQL> select buseo, min(sal) from sawon
2 group by buseo;
BUSEO MIN(SAL)
---------- ----------
관리부 1000000
영업부 2000000
SQL기초강좌_집합함수(Aggreation Function)
집합함수
아래는 sawon 테이블에서 급여의 총합, 부서별로 급여의 합을 구하는 예문이다.
SQL> select sum(sal) from sawon;
SUM(SAL)
----------
8000000
SQL> select buseo, sum(sal) from sawon
2 group by buseo;
BUSEO SUM(SAL)
---------- ----------
관리부 3000000
영업부 5000000
SQL기초강좌_집합함수(Aggreation Function)
집합함수
SUM([DISTINCT|ALL] n) : 합계를 반환한다. 인수 n은 테이블의 숫자형 칼럼 이어야 하며
값에 NULL이 포함되어 있을 때는 합계에 포함되지 않는다.
--아래 예문은 부서별로 급여의 총합을 출력 하는데 부서의 급여 평균이 1,500,000원
보다 큰 경우만 출력하는 예문이다.
SQL> select buseo, sum(sal) from sawon
2 group by buseo
3 having avg(sal) > 1500000;
BUSEO SUM(SAL)
-------- ----------
영업부 5000000
SQL기초강좌_집합함수(Aggreation Function)
집합함수
-- EMP 테이블에서 JOB별 최고급여를 출력하는데, 최고급여가 높은 것부터 출력하시
오.
SQL> select job, max(sal) from emp
2 group by job
3 order by max(sal);
JOB MAX(SAL)
--------- ----------
CLERK 1300
SALESMAN 1600
MANAGER 2975
ANALYST 3000
PRESIDENT 5000
SQL기초강좌_집합함수(Aggreation Function)
집합함수

집합함수(2)

  • 1.
  • 2.
    SQL기초강좌_집합함수(Aggreation Function) 집합함수 COUNT({* |[DISTINCT|ALL] expr}) : 추출된 행(ROW)수를 반환한다. DISTINCT를 사용 했다면 중복된 행을 제거한 행수를 반환하고 , expr을 사용했다면 expr이 NOT NULL인 행의 수를 반환한다. ASTERISK(*)는 중복 과 NULL을 포함한 모든 행의 수를 반환 할 때 사용한다.
  • 3.
    SQL> select name,sal, buseo from sawon; NAME SAL BUSEO ---------- ---------- ---------- 가길동 2000000 영업부 나길동 3000000 영업부 다길동 영업부 라길동 1000000 관리부 마길동 2000000 관리부 --“다길동” 사원은 sal를 등록하지 않았으니 NULL 임을 기억하자. SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 4.
    SQL> select count(sal)from sawon; COUNT(SAL) --------------- 4 SQL> select count(distinct sal) from sawon; COUNT(DISTINCTSAL) ---------------------- 3 --아래의 ASTERISK(*)는 결국 테이블등의 전체 건수를 파악 할 때 자주 사용 된다. SQL> select count(*) from sawon; COUNT(*) ---------- 5 SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 5.
    --다음 예문은 부서별로인원 수를 출력 하는 예문이다. SQL> select buseo, count(buseo)||'명' from sawon 2 group by buseo; BUSEO COUNT(BUSEO)||'명' ---------- ----------------------------------------- 관리부 2명 영업부 3명 SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 6.
    --각 직무별로 최대급여와인원수를 구하되 직무별 인원수가 2명 이상인 직무 만 나타내는 예문이다. (평균급여의 소수점 이하는 반올림) SQL> select job "직무", round(max(sal)) "최대 급여", count(*) "인원수" 2 from emp 3 group by job 4 having count(*)>2; 직무 최대 급여 인원수 --------- ----------- ---------- CLERK 1300 4 MANAGER 2975 3 SALESMAN 1600 4 SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 7.
    -- 사원이 3명이상인JOB에 대해 JOB별 평균급여를 계산하시오. SQL> select job, avg(sal) from emp 2 group by job 3 having count(*) > 3; JOB AVG(SAL) --------- ---------- CLERK 1037.5 SALESMAN 1400 SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 8.
    --아래는 sawon 테이블에서부서별로 급여의 최대, 최소값을 구하는 예문이다. SQL> select buseo, max(sal) from sawon 2 group by buseo; BUSEO MAX(SAL) ---------- ---------- 관리부 2000000 영업부 3000000 SQL기초강좌_집합함수(Aggreation Function) 집합함수 MAX, MIN함수는 숫자, 문자, 날짜 등 어떠한 자료형 이라도 사용이 가능하다. MAX([DISTINCT|ALL] expr) : 최대값을 반환한다. MIN([DISTINCT|ALL] expr) : 최소값을 반환한다.
  • 9.
    --아래는 sawon 테이블에서부서별로 급여의 최대, 최소값을 구하는 예문이다. SQL> select buseo, min(sal) from sawon 2 group by buseo; BUSEO MIN(SAL) ---------- ---------- 관리부 1000000 영업부 2000000 SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 10.
    아래는 sawon 테이블에서급여의 총합, 부서별로 급여의 합을 구하는 예문이다. SQL> select sum(sal) from sawon; SUM(SAL) ---------- 8000000 SQL> select buseo, sum(sal) from sawon 2 group by buseo; BUSEO SUM(SAL) ---------- ---------- 관리부 3000000 영업부 5000000 SQL기초강좌_집합함수(Aggreation Function) 집합함수 SUM([DISTINCT|ALL] n) : 합계를 반환한다. 인수 n은 테이블의 숫자형 칼럼 이어야 하며 값에 NULL이 포함되어 있을 때는 합계에 포함되지 않는다.
  • 11.
    --아래 예문은 부서별로급여의 총합을 출력 하는데 부서의 급여 평균이 1,500,000원 보다 큰 경우만 출력하는 예문이다. SQL> select buseo, sum(sal) from sawon 2 group by buseo 3 having avg(sal) > 1500000; BUSEO SUM(SAL) -------- ---------- 영업부 5000000 SQL기초강좌_집합함수(Aggreation Function) 집합함수
  • 12.
    -- EMP 테이블에서JOB별 최고급여를 출력하는데, 최고급여가 높은 것부터 출력하시 오. SQL> select job, max(sal) from emp 2 group by job 3 order by max(sal); JOB MAX(SAL) --------- ---------- CLERK 1300 SALESMAN 1600 MANAGER 2975 ANALYST 3000 PRESIDENT 5000 SQL기초강좌_집합함수(Aggreation Function) 집합함수