반응형
GROUP BY
그룹을 묶어줄 기준을 제시하는 구문으로 그룹 함수와 함께 사용한다
여러개의 값들을 하나의 그룹으로 묶어서 처리 시 사용한다
※ GROUP함수는 WHERE절에서 조건 사용 불가함 ⇒ HAVING절에서 처리
GROUP BY 그룹할컬럼
--각 부서별 사원수
SELECT DEPT_CODE 부서명, COUNT(*)||'명' 인원
FROM EMPLOYEE
GROUP BY DEPT_CODE;
--각 직급별 직급코드, 총급여의 합, 사원수, 보너스를 받는 사원수, 평균급여, 최고급여, 최소급여
SELECT JOB_CODE
,SUM(SALARY) "총 급여 합"
,COUNT(*) "직원수"
,COUNT(BONUS) "보너스 받는 직원수"
,ROUND(AVG(SALARY)) "평균 급여"
,MAX(SALARY) "최고 급여"
,MIN(SALARY) "최소 급여"
FROM EMPLOYEE
GROUP BY JOB_CODE
ORDER BY JOB_CODE; --오름차순
--성별별 사원수
SELECT DECODE(SUBSTR(EMP_NO,8,1),'1','남자','2','여자') "성별"
,COUNT(*) "사원수"
FROM EMPLOYEE
GROUP BY SUBSTR(EMP_NO,8,1);
HAVING
그룹에 대한 조건 제시 시 사용되는 구문이며 GROUP BY 절 다음에 작성한다
HAVING 조건식;
--각 부서별 평균 급여가 300만원 이상인 부서들만 조회
SELECT DEPT_CODE, FLOOR(AVG(SALARY)) "평균급여"
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING AVG(SALARY)>=3000000;
--각 부서별 보너스를 받는 사원이 없는 부서만 조회
SELECT DEPT_CODE
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING COUNT(BONUS)=0;
반응형
'DB(SQL)' 카테고리의 다른 글
[SQL] JOIN 기본 정의 (0) | 2022.03.26 |
---|---|
[SQL] 집합 연산자 (SET OPERATOR) (0) | 2022.03.26 |
[SQL] 함수의 정의와 단일행 함수와 그룹함수 (0) | 2022.03.26 |
[SQL] 그룹 함수 - SUM, AVG, MIN, MAX, COUNT (0) | 2022.03.26 |
[SQL] 단일행 함수 - CASE WHEN THEN END(JAVA IF문 역할) (0) | 2022.03.26 |