예제 1)
데이터는 https://swkn.tistory.com/80#7.%20Table%20%EC%9D%91%EC%9A%A9-1 내의 데이터를 입력하였다.
연습문제
1. 부서별 평균급여, 최고급여, 최저급여, 사원수 조회(평균급여는 소수점 둘째자리에서 반올림)
2. 직급별 사원수 조회(단 3명 이상인 결과만 출력)
3. 연도별 입사한 사원수 조회(조회결과 : 연도(yyyy), 사원수)
3.1. 위의 결과에서 각 연도별로 부서별 입사한 사원수 조회(조회결과 : 연도(yyyy), 부서번호, 사원수)
select deptno as '부서번호' , round(avg(sal),2) as '평균급여',
max(sal) as '최고급여', min(sal) as '최소급여',
count(*) as '사원수' from emp
group by deptno;
부서번호와 평균급여 , 최고급여 , 최소급여 , 사원수를 group by에 의해 직급별로 조회한 것이다.
select job , count(*) from emp group by job
having count(*) >= 3;
직급 ( job )과 사원수 ( count(*) ) 를 직급으로 그룹화 하고 조건 ( having ) 식으로 3명이상으로 조회했다.
select date_format(hiredate, '%Y') as '입사년도' , count(*) as '사원수' from emp
group by date_format(hiredate, '%Y');
입사년도를 %Y 로 포맷하여 출력하고 사원수를 입사년도 사원수로 그룹화해서 조회했다.
select date_format(hiredate, '%Y') as '입사년도' , deptno as '부서번호' ,
count(*) as '사원수' from emp
group by date_format(hiredate, '%Y') , deptno;
입사년도를 %Y 로 포맷하여 출력하고 사원수를 입사년도 사원수로 그룹화하고 다시 부서번호로 그룹화해서 조회했다.
예제 2)
연습문제
1. clark 보다 늦게 입사한 사원 조회
2. 부서번호가 20인 사원 중에서 전체 사원 평균 급여보다 높은 급여를 받는 사원 조회
3. 2번 조회 결과에서 부서이름, 부서위치도 함께 조회
select * from emp where hiredate > ( select hiredate from emp where ename = 'clark' );
입사일자가 서브쿼리로 clark의 입사일자보다 높은 인원으로 조회했다.
select * from emp where deptno = '20' and sal>(select avg(sal) from emp);
부서번호가 20이고 전체평균 avg(sal)보다 높은 급여를 받는 인원으로 조회했다.
select e.* , d.* from emp e , dept d
where e.deptno = '20' and d.deptno = '20'
and e.sal>(select avg(sal) from emp);
'MySQL > MySQL icia 26일차' 카테고리의 다른 글
MySQL 제약조건(Contraints)에 대해서 (0) | 2023.03.29 |
---|---|
MySQL Join , 서브쿼리란? (0) | 2023.03.29 |