본문으로 바로가기

[DATABASE][GROUP FUNCTION]

category DATABASE 2018. 4. 20. 08:41

 


Group Function


그룹함수

테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이고 복수행 함수라고도 함


그룹함수의 종류에는 COUNT, MAX, MIN, SUM, AVG, STDDEV, VARIANCE 등이 있다.



그룹함수 규칙

1. 그룹함수는 NULL값이 있는 컬럼은 조회에 포함시키지 않는다.

2. 로우가 없는 테이블에 그룹함수 COUNT()사용 시 0 이 출력되며 SUM() 사용시 NULL 값이 출력됩니다.

3. COUNT, MAXMIN은 문자, 숫자, 날짜 데이터 모두에게서 사용할 수 있다. 그러나 AVG, SUM, VARIANCE, STDDEVNUMBER만 사용 가능하다.

4. Expr이 있는 인수들의 자료 형태는 CHAR, VARCHAR2, NUMBER, DATE형이 될 수 있다.


COUNT 함수


테이블에서 조건을 만족하는 행의 개수를 반환하는 함수

COUNT(*), (숫자) -> NULL값을 포함한 전체 행의 개수  COUNT(컬럼명)    ->NULL값을 제외한 전체 행의 개수


사용법

SELECT COUNT(컬럼명) FROM 테이블명;

SELECT COUNT(*) FROM 테이블명;

SELECT COUNT(숫자) FROM 테이블명;

SELECT COUNT(NVL(컬럼명, 컬럼이null일 경우 대체할 값))   FROM 테이블명;



예제1> 컬럼의 개수를 구는 예제(NULL값 포함)

예제2> 컬럼의 개수를 구하는 예제(NULL미포함)


1. SQL> SELECT COUNT(NAME) FROM BIT5;

결과 :   COUNT(NAME)

  -----------

             11


2. SQL> SELECT COUNT(*) FROM BIT5;

2. SQL> SELECT COUNT(숫자) FROM BIT5;

결과 :    COUNT(10)   COUNT(*)

  ----------   ----------

          12               12


MAX / MIN 함수


MAX 함수 = 지정한 컬럼 값들 중에서 최대값을 구하는 함수

MIN 함수 = 지정한 컬럼 값들 중에서 최소값을 구하는 함수


MAX, MIN 함수를 데이터가 없는 테이블에 사용했을 때에는 NULL값을 출력한다.


사용법

SELECT MAX(컬럼명) FROM 테이블명;

SELECT MIN (컬럼명) FROM 테이블명;


예제> JAVA과목의 최대값과 CPP과목의 최소값을 구하는 예제


SQL> SELECT MAX(JAVA_S), MIN(CPP_S) FROM BIT5;

결과 :   MAX(JAVA_S) MIN(CPP_S)

   -----------     ----------

    87             18


SUM 함수


지정한 컬럼 값의 합계를 반환하는 함수

 해당 컬럼 값이 NULL인 것은 제외하고 계산한다.


사용법

SELECT SUM(컬럼명) FROM 테이블명;

SELECT SUM(DISTINCT 컬럼명)  FROM 테이블명;



예제1> CPP_S 과목의 총점을 구하는 예제


SQL> SELECT SUM(CPP_S) FROM BIT5;

결과 :   SaUM(CPP_S)

  ----------

         571


예제2> WEB_S 과목의 중복된 점수를 제거한 총점을 구하는 예제


SQL> SELECT SUM(DISTINCT WEB_S) FROM BIT5;

결과 :   SUM(DISTINCTWEB_S)

  ------------------

               562


AVG 함수

지정한 컬럼 값의 합계를 반환하는 함수

 해당 컬럼 값이 NULL인 것은 제외하고 계산한다.


사용법

SELECT AVG(컬럼명) FROM 테이블명;

SELECT AVG(DISTINCT 컬럼명)  FROM 테이블명;


AVG 함수


예제> WEB_S 과목의 평을 구하는 예제

SQL> SELECT AVG(WEB_S) FROM BIT5;

결과 :    AVG(WEB_S)

    ----------

             60


STDDEV 함수


지정한 컬럼의 표준편차를 구하는 함수

분산 값의 제곱근


사용법

SELECT STDDEV(컬럼명) FROM 테이블명;




STDDEV 함수


예제> CPP_S 과목의 표준편차를 구하는 예제


SQL> SELECT STDDEV(CPP_S) FROM BIT5;

결과 :    STDDEV(CPP_S)

  -------------

      19.1190449


VARIANCE 함수


지정한 컬럼의 분산을 구하는 함수

분산이란 주어진 범위의 개별 값과 평균값과의 차이인 편차를 구해 이를 제곱해서 평균한


사용법

SELECT VARIANCE(컬럼명) FROM 테이블명;


예제> JAVA_S 과목의 분산을 구하는 예제


SQL> SELECT VARIANCE(JAVA_S) FROM BIT5;

결과 :    VARIANCE(JAVA_S)

  ----------------

         626.992424


















smart_home


칼럼명

데이터형

-

temperature

FLOAT

온도

humidity

FLOAT

습도

regi_time

DATE

등록시각




집합set







합집합

UNION /UNION ALL


Select [column]

from [table]

where name =‘A’

UNION

Select [column]

from [table]

where name =‘B’  




교집합


INTERSECT

Select [column]

from [table]

where name =‘A’

INTERSECT

Select [column]

from [table]

where name =‘B’  



차집합


MINUS


Select [column]

from [table]

where name =‘A’

MINUS

Select [column]

from [table]

where name =‘B’ 


주의할 점


Select [column1] [column2]

from [table]

where name =‘A’

UNION

Select [column2]

from [table]

where name =‘B’  



Select [column1] [column2]

from [table]

where name =‘A’

UNION

Select [column1] [column2]

from [table]

where name =‘B’ 



GROUP BY


Rollup()


추가적인 집계정보를 보여준다.

ROLLUP절에 명시할 수 있는 표현식에는 그룹핑 대상, SELECT 리스트에서 집계함수를 제외한 컬럼의 표현식이 올 수 있다.

명시한 표현 식 수와 순서에 따라 레벨 별로 집계한 결과가 반환된다


Cube()

ROLLUP과 비슷하지만 개념이 다름. ROLLUP은 레벨 별로 순차적 집계를 했다면 CUBE는 명시한 표현식 개수에 따라 가능한 모든 조합별로 집계한 결과를 반환한다. Cub

SELECT TEAM, DEP, SUM(CPP_S) AS CPP,

   COUNT(*) AS COUNT

FROM BIT5

GROUP BY CUBE(TEAM,DEP);

'DATABASE' 카테고리의 다른 글

[DATABASE][JOIN]  (0) 2018.04.20
[DATBASE][스키마]  (0) 2018.04.20
[DATABASE][데이터베이스의 분석 설계 과정]미완성  (0) 2018.04.19
[DATABASE][데이터의 무결성]  (0) 2018.04.19
[DATABASE][TransAction]  (0) 2018.04.19