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 |