데이터베이스

데이터베이스_SQL기본(HAVING)_예제_ 22.06.23(day04)

양빵빵 2022. 6. 23. 14:05

 

 

 

 


-- HAVING : 그룹화된 결과에서 조건을 걸어 행 수를 제한

-- 부서별로 가장 어린사람의 생년월일, 연장자의 생년월일, 부서별 총 사원 수를 조회
-- 그런데 부서별 사원이 1명인 부서의 정보는 조회화고 싶지 않음.
-- WHERE 이후 ORDER BY 이전에 HAVING을 작성

SELECT
  dept_cd 부서코드 
 ,MAX(birth_de) 최연소자
 ,MIN(birth_de) 최연장자
 ,COUNT(emp_no) 직원수
FROM tb_emp
GROUP BY dept_cd
HAVING COUNT(emp_no)>1 --사원수가 1명보다는 커야되요~
ORDER BY dept_cd
;

-- 사원별로 급여를 제일 많이 받았을 때, 제일 적게 받았을때, 평균적으로 얼마 받았는지 조회
-- 그룹화 이후에 평균 급여가 450만원 이상인 사람만 조회
SELECT
  emp_no "사번"
  , TO_CHAR(MAX(pay_amt),'L999,999,999') "최고 수령액"
  , TO_CHAR(MIN(pay_amt),'L999,999,999') "최저 수령액"
  , TO_CHAR(ROUND(AVG(pay_amt),2),'L999,999,999.99' )"평균 수령액" 

FROM tb_sal_his
GROUP BY emp_no
HAVING AVG(pay_amt) >= 4500000
ORDER BY emp_no;

-- 사원별로 2019년 평균 수령액이 450만원 이상인 사원의 2019년 연봉 조회
SELECT
  emp_no "사번"
  , SUM(pay_amt)

FROM tb_sal_his
WHERE pay_de BETWEEN '20190101' AND '20191231'
GROUP BY emp_no
HAVING AVG(pay_amt) >= 4500000
ORDER BY emp_no;