본문 바로가기
DATABASE/ORACLE

[Oracle] SQL 그룹 함수 집계 데이터

SQL 그룹 함수 집계 데이터





그룹 함수


하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등 하나의 결과로 나타나게 하는 것


구분 

설명 

SUM 

그룹의 누적 합계를 반환 

AVG 

그룹의 평균을 반환 

COUNT 

그룹의 총 개수를 반환 

MAX

그룹의 최대값을 반환 

MIN 

그룹의 최소값을 반환 

STDDEV 

그룹의 표준편차를 반환 

VARIANCE 

그룹의 분산을 반환 



현재 테이블


1
2
3
4
5
6
7
8
SQL> SELECT *FROM member;
 
        ID USERNAME             DEPT    BIRTH           SAL       COMM
---------- -------------------- ------- -------- ---------- ----------
        10 아이유               로엔    93/05/16       1000        800
        11 삼도다               컴알못  91/08/12        500
        12 호날두               레알    85/02/05       2000       1000
        13 메시                 바르샤  87/06/24       3000        100
cs




SUM


1
2
3
4
5
SQL> SELECT SUM(SAL) FROM member;
 
  SUM(SAL)
----------
      6500
cs




NULL을 저장한 칼럼과 연산한 결과도 NULL이라고 배웠었다, 하지만

그룹 함수는 다른 연산자와 달리 해당 칼럽 값이 NULL인 것을 제외하고 계산한다.


1
2
3
4
5
SQL> SELECT SUM(COMM) FROM member;
 
 SUM(COMM)
----------
      1900
cs




AVG


1
2
3
4
5
SQL> SELECT AVG(SAL) FROM member;
 
  AVG(SAL)
----------
      1625
cs





MAX, MIN


1
2
3
4
5
SQL> SELECT MAX(SAL), MIN(SAL) FROM member;
 
  MAX(SAL)   MIN(SAL)
---------- ----------
      3000        500
cs

문자 또한 알파벳 순으로 출력 된다



이름과, 최대 값을 같이 구하고 싶다


1
2
3
4
5
SQL> SELECT USERNAME, MAX(SAL) FROM member;
SELECT USERNAME, MAX(SAL) FROM member
       *
1행에 오류:
ORA-00937: 단일 그룹의 그룹 함수가 아닙니다
cs

※ username은 전체 결과가 나오지만, MAX(SAL)은 1개만 나오기 때문에 허용되지 않는다.




COUNT : 테이블에서 조건을 만족하는 해으이 개수를 반환하는 함수


1
2
3
4
5
SQL> SELECT COUNT(COMM) FROM member;
 
COUNT(COMM)
-----------
          3
cs

 삼도다는 COMM이 없다.




COUNT(*) : 전체 행의 개수를 출력


1
2
3
4
5
SQL> SELECT COUNT(*),COUNT(COMM) FROM member;
 
  COUNT(*) COUNT(COMM)
---------- -----------
         4           3
cs


'DATABASE > ORACLE' 카테고리의 다른 글

[Oracle] SQL HAVING  (1) 2018.04.20
[Oracle] SQL GROUP BY 절  (0) 2018.04.20
[Oracle] SQL 조건식  (0) 2018.04.20
[Oracle] SQL 날짜 함수  (1) 2018.04.19
[Oracle] SQL 문자 함수  (0) 2018.04.19