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 |