[25일 차] : [25일 차] : Oracle - SELECT문(3), 함수(2)

서하루·2022년 11월 16일
0

(2) Oracle 공부기록

목록 보기
4/11

[학습목표]

  • GROUP BY 절
  • HAVING 절

📝 1. GROUP BY절 📝
📌 그룹 기준을 제시할 수 있는 구문(해당 그룹 기준별로 여러 그룹으로 묶을 수 있다.)

-- 전 사원들의 급여 합계를 구함
SELECT SUM(SALARY)
FROM EMPLOYEE;  --> 전체 사원이 하나의 그룹으로 묶여서 총합 구함

SELECT DEPT_CODE, SUM(SALARY) -- 에러발생, DEPT_CODE는 여러 행, SUM(SALARY)는 하나의 행 (= 그룹으로 묶였으니까)
FROM EMPLOYEE;

--각 부서별 총 급여합 
SELECT DEPT_CODE,SUM(SALARY) -- 실행순서3
FROM EMPLOYEE -- 실행순서1
GROUP BY DEPT_CODE -- 실행순서2
ORDER BY DEPT_CODE; -- 오름차순 , 실행순서4

-- 각 부서별 사원수
SELECT DEPT_CODE, COUNT(*), SUM(SALARY)
FROM EMPLOYEE
GROUP BY DEPT_CODE;
==> 부서 기준으로 부서의 사원수 행 갯수 반환, 급여 합 반환

-- 각 직급별 총 사원수, 보너스를 받는 사원수, 급여합, 평균급여, 최저급여, 최고급여
SELECT JOB_CODE, COUNT(*)"총사원수", COUNT(BONUS) "보너스를 받는 사원수",SUM(SALARY)"급여합", FLOOR(AVG(SALARY)) "평균급여", MIN(SALARY) "최저급여", MAX(SALARY) "최고급여"
FROM EMPLOYEE
GROUP BY JOB_CODE;

-- GROUP BY절에 함수식 기술 가능함 !
SELECT DECODE(SUBSTR(EMP_NO,8,1),'1','남자','2','여자')"성별" , COUNT(*)
FROM EMPLOYEE
GROUP BY SUBSTR(EMP_NO,8,1);
=> 그룹바이절 주민번호에서 8번째 자리부터 한자리 수가 ~ -> SELECT 절로 넘어감

📝 2. HAVING 절 📝
📌 그룹에 대한 조건을 제시할 때 사용되는 구문(주로 그룹함수식을 가지고 조건제시)

SELECT DEPT_CODE"부서코드", ROUND(AVG(SALARY))"평균급여"
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING AVG(SALARY) >= 3000000
ORDER BY DEPT_CODE;

=> 부서코드를 그룹으로 묶고, 평균급여가 3백만원 이상인 부서만 조회됨

-- 부서가 D1 또는 D9인 부서만 조회
SELECT DEPT_CODE"부서코드", ROUND(AVG(SALARY))"평균급여"
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING DEPT_CODE IN('D1','D9');

=> 부서코드로 그룹을 묶고 부서코드가 D1,D9인 부서의 부서코드와 평균급여 조회

-- 부서별 보너스를 받는 사원이 없는 부서만 조회
SELECT DEPT_CODE,COUNT(BONUS)
FROM EMPLOYEE
GROUP BY DEPT_CODE
HAVING COUNT(BONUS) =0;
=> 부서코드로 그룹묶고, 보너스가 0이면 보너스 안받는 사원의 부서 조회

-- 남자 사원들 중에 부서별 보너스받는 사원이 없는 부서 조회
SELECT DEPT_CODE, COUNT(BONUS) 
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO,8,1) = '1'
GROUP BY DEPT_CODE
HAVING COUNT(BONUS) = 0;
=> 전체 직원테이블로부터 WHERE절 실행 -> 그룹바이절 실행 -> 해빙절 실행  

< SELECT문 실행순서 >
5.SELECT * | 조회하고자하는 컬럼 [AS] 별칭 | 산술연산식 [AS] "별칭" | 함수식
1.FROM 조회하고자하는 테이블명 [별칭], 테이블명 ''
2.WHERE 조건식(연산자들을 가지고 연산)
3.GROUPY BY 그룹기준으로 삼을 컬럼"함수식 | 산순연산식, 칼럼'')
4.HAVING 조건식( 그룹함수 또는 그룹기준의 컬러 가지고기술
6.ORDER BY 정렬기준으로 삼을 컬럼|별칭| 컬럼순번 [ASC/DESB] ,[[NULL FISTR | NULL LAST


0개의 댓글