Group Function
그룹함수
테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이고 복수행 함수라고도 함
그룹함수의 종류에는 COUNT, MAX, MIN, SUM, AVG, STDDEV, VARIANCE 등이 있다.
그룹함수 규칙
1. 그룹함수는 NULL값이 있는 컬럼은 조회에 포함시키지 않는다.
2. 로우가 없는 테이블에 그룹함수 COUNT()를 사용 시 0 이 출력되며 SUM()를 사용시 NULL 값이 출력됩니다.
3. COUNT, MAX와 MIN은 문자, 숫자, 날짜 데이터 모두에게서 사용할 수 있다. 그러나 AVG, SUM, VARIANCE, STDDEV는 NUMBER만 사용 가능하다.
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 |