336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
SQL - GROUP BY
#SELECT 그룹함수
- 데이터의 요약이 필요할 때 사용된다
- Row의 수
- 특정 컬럼 값 중 가장 큰 수
- 특정 컬럼 값 중 가장 작은 수
- 특정 컬럼 값 중 평균 값
- 특정 칼럼 값의 합계
SELECT [COLUMN], [COLUMN], [...]
FROM [TABLE]
WHERE [CONDITIONS]
FROM [TABLE]
WHERE [CONDITIONS]
GROUP BY [COULUMN], [COULUMN], [...]
만약에 조건에서 그룹 별로 보고 싶다면
GROUP BY를 작성해 준다
그럼 결과는 위에서 배운 DISTINCT와 결과 값이 똑같다
하지만 차이점은 DISTINCT는 집계를 구할 수 없지만 GROUP BY는 집계를 구할 수 있다
# GROUP BY로 집계
GROUP BY의 장점으로는 집계를 구할 수 있다고 배웠다
집계를 하려면 COUNT ( 집계할 컬럼) ) 으로 추가해주면 된다
그러면 결과는 위와 같이 그룹 별로 집계가 된다
GROUP BY는 무엇으로 그룹이 나눠질지만 잘 파악하면 된다
GROUP BY 다음에 올 컬럼
# 집계 함수
집계 함수는 개수를 알아내는 함수이다
단독적으로 전체적인 데이터에서 카운팅을 진행할 수 있지만
그룹별로 구하고 싶다면 GROUP BY를 사용해야 한다
그룹 별 집계를 하고 싶다면
알고자 하는 컬럼을 검색하고
그 컬럼을 그룹짓는다
이것을 응용하여 부서장 별 부하 직원의 수를 구해봤다
그룹 지을 컬럼을 정하고 그 그룹 별로 카운팅할 컬럼을 선택하여
그룹 집계를 한다
부서장과 부서별 집계를 하고 싶다면
SELECT MANAGER_ID, DEPARTMENT_ID로 셀렉을 하고
GROUP BY 에서 MANAGER_ID, DEPARTMENT_ID로 그룹을 지어 주면 된다
# SQL 그룹함수
SQL의 그룹 함수는 다음과 같다
이것을 응용해서 전체 사원 중 가장 높은 연봉과 낮은 연봉
전체 연봉의 합, 전체 연봉의 평균을 구한다
그룹 함수를 이용해서 응용을 한다면
부서 별 최대 연봉, 최소 연봉, 연봉의 합, 연봉의
평균을 구할 수 있다
평균의 소수점을 지우고 싶다면
ROUND(AVG(SALARY))로 묶어 주면 된다
# 집계함수 비교
집계함수 비교는 WHERE절이 허용 안되고 HAVING절을 사용해야 한다
# GROUP BY에 대한 조건 (HAVING)
특정 값에 대한 집계를 하고 싶으면 조건을 넣어야 한다
GROUP BY에서 그룹 별로 그룹을 만들고
HAVING을 통해서 특정값만 집계할 수 있다
'[ Developer ] > Oracle SQL' 카테고리의 다른 글
[SQL] Update 쿼리로 DB 데이터 업데이트 하기 (0) | 2016.05.12 |
---|---|
[SQL] INSERT INTO 삽입문 쿼리 (0) | 2016.05.11 |
[SQL] ORDER BY 로 쿼리 정렬하기 (0) | 2016.05.09 |
[SQL] WHERE 절 쿼리에 조건 주기 (2) | 2016.05.09 |
[SQL] SELECT Query (0) | 2016.05.05 |