[DB]Group Function / 집합 set

그룹함수


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


그룹함수의 종류


Count


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

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


사용법

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

SELECT COUNT(*) FROM 테이블명;

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

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


MAX/MIN


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

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

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


사용법

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

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



SUM


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

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


사용법

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

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


AVG


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

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


사용법

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

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


STDDEV


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

분산 값의 제곱근


사용법

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


VARIANCE


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

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


사용법


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



Rollup()

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

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

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


SQL>   SELECT TEAM, SUM(CPP_S)            

  FROM BIT5                                            

  GROUP BY ROLLUP(TEAM);


결과:


팀별 점수의 합계

TEAM   SUM

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

2  287

1  284

571



Cube()

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


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

   COUNT(*) AS COUNT

FROM BIT5

GROUP BY CUBE(TEAM,DEP);


TEAM       DEP                       SCORE      COUNT

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

1        컴공                             54          2

1        비전공                          302          4

1                                           356          6

2        컴공                             192          4

2        비전공                          172          2

2                                           364          6

             컴공                              246          6

             비전공                           474          6

                                  720         12


팀의 전공자 별 점수의

총합과 인원의 수.

총 점수와 인원 수




집합 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’  


차집합

Select [column]

from [table]

where name =‘A’

MINUS

Select [column]

from [table]

where name =‘B’  





TAGS.

Comments