본문 바로가기
DATABASE/ORACLE

[Oracle] SQL GROUP BY 절

GROUP BY 절




그룹 함수를 쓰되 어떤 컬럼을 기준으로 그룹함수를 적용 할 경우 GROUP BY 절 뒤에 해당 컬럼을 기술한다

칼럼의 별칭을 사용 할 수 없고, 반드시 칼럼명을 기술해야 한다


형식 : SELECT 컬럼명, 그룹함수 FROM 테이블명 WHERE 조건(연산자) GROUP BY 칼럼명;



현재 테이블

1
2
3
4
5
6
7
8
9
10
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
        14 라모스               레알    86/03/30       1500        800
        15 크로스               레알    90/01/04       1300        500
cs






1
2
3
4
5
6
7
8
9
10
11
12
SQL> SELECT DEPT FROM member;
 
DEPT
-------
로엔
컴알못
레알
바르샤
레알
레알
 
6 개의 행이 선택되었습니다.
cs


GROUP by 문으로 해보자


1
2
3
4
5
6
7
8
SQL> SELECT DEPT FROM member group by DEPT;
 
DEPT
-------
바르샤
로엔
컴알못
레알
cs


중복된 데이터가 없이 출력된 것을 확인 할 수 있다




소속(DEPT) 별로 급여(SAL)을 구해보겠다.

GROUP BY를 사용 하지 않음  전체 DEPT가 나오며, AVG는 단일 값이라서 스크립트 에러

아래 GROUP BY를 사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> SELECT DEPT, avg(SAL) from member;
SELECT DEPT, avg(SAL) from member
       *
1행에 오류:
ORA-00937: 단일 그룹의 그룹 함수가 아닙니다
 
 -----------------------------------------------------
SQL> SELECT DEPT, avg(SAL) from member group by DEPT;
 
DEPT      AVG(SAL)
------- ----------
바르샤        3000
로엔          1000
컴알못         500
레알          1600
cs




부서(DEPT) 별로 사원 수와 커미션(COMM)을 받는 사원의 수를 계산 해보자


1
2
3
4
5
6
7
8
SQL> SELECT DEPT, COUNT(*), COUNT(COMM) FROM member Group by DEPT;
 
DEPT      COUNT(*) COUNT(COMM)
------- ---------- -----------
바르샤           1           1
로엔             1           1
컴알못           1           0
레알             3           3
cs







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

[Oracle] SQL JOIN  (0) 2018.04.20
[Oracle] SQL HAVING  (1) 2018.04.20
[Oracle] SQL 그룹 함수 집계 데이터  (0) 2018.04.20
[Oracle] SQL 조건식  (0) 2018.04.20
[Oracle] SQL 날짜 함수  (1) 2018.04.19