- 전날 배운 내용 _ 다시 해보기
- having 사용해보기 _ 문법의 우선순위 알아보기
where > group by > having > order by 순으로 작성한다
- date_format() - date타입을 문자로 표현하기
- 응용 문제 풀어보기
-- 1. 부서별 평균급여, 최고급여, 최저급여, 사원수 조회(평균급여는 소수점 둘째자리에서 반올림)
select deptno as '부서번호' , round(avg(sal),1) as '평균급여'
, max(sal) as '최고급여' , min(sal) as '평균급여'
, count(deptno) as ' 사원수 ' from emp
-- 해당 문제 조건에 맞게 테이블을 설정해줌
group by deptno order by deptno asc
-- deptno을 기준으로 그룹화 deptno를 기준으로 정렬
-- 2. 직급별 사원수 조회(단 3명 이상인 결과만 출력)
select job , count(empno) from emp
-- 해당 문제에 맞게 테이블 설정
group by job
-- job을 기준으로 그룹화
having count(empno) >= 3;
-- having으로 그룹에 조건을 설정
-- 3. 연도별 입사한 사원수 조회(조회결과 : 연도(yyyy), 사원수)
select date_format(hiredate , '%Y') as '입사년도'
-- date_format(hiredate , '%Y')으로 date타입을 문자로 표현
, count(empno) as '사원수' from emp
-- 모두가 가지고 있어야하는 번호로 카운트(*로해도 상관없음)
group by date_format(hiredate , '%Y');
-- date_format(hiredate , '%Y')를 기준으로 그룹화
-- 3. 위의 결과에서 각 연도별로 부서별 입사한 사원수 조회
-- (조회결과 : 연도(yyyy), 부서번호, 사원수)
select date_format(hiredate , '%Y') as '입사년도'
-- date_format(hiredate , '%Y')으로 date타입을 문자로 표현
, deptno , count(empno) as '사원수' from emp
-- 모두가 가지고 있어야하는 번호로 카운트(*로해도 상관없음)
group by date_format(hiredate , '%Y') , deptno;
-- date_format(hiredate , '%Y')를 기준으로 그룹화
- 조인(join)_알아보기
조인(join) = 내부조인 , 외부조인으로 나누어진다
테이블 dept , emp 는 같은 컬럼 정보를 가진 deptno가 있다
그렇기 때문에 내부 조인이 가능하다
테이블에도 참조 관계라는게 있다
이해를 쉽게하자면 게시글이 없는 댓글은 있을 수 없다
댓글이 게시글의 번호라는 공통된 정보를 가지고 있기 때문에 게시글이 있어야 댓글도 존재 가능하다
내부조인 참고 어떤 느낌인지 참고만하자
- 조인(join)_사용해보기
-- emp , dept를 조인하여 empno , ename , deptno , dname , loc 조회
-- (단, 급여가 2500 이상인 사원만 조회하고 , 조회결과는 사원이름 기준으로 오름차순 정렬)
select e.empno , e.ename , e.deptno , d.dname , d.loc
from emp e, dept d
-- emp를 e , dept를 d로 약어 선언
where e.deptno = d.deptno and e.sal >= 2500
-- e.deptno 와 d.deptno가 같고 sal이 2500 이상인것
order by e.ename asc;
-- 오름차순으로 출력
- 서브쿼리(sub query)_ 알아보기
- 서브쿼리(sub query)_예시문
1번으로 확인하고 2번으로 찾아도 상관 없지만
서브쿼리를 적용하면 한번에 찾을 수 있다
- 서브쿼리(sub query)_응용해보기
-- 최고 급여를 받는 사원 정보 조회
select * from emp where sal = (select max(sal) from emp);
-- 전체 emp테이블에서 sal이 제일 큰 sal과 같은 것 출력
-- allen 보다 높은 급여를 받는 사원 조회
select * from emp where sal > (select sal from emp where ename = 'allen');
-- 전체 emp테이블에서 sal 이 이름이 allen인 사원보다 높은 정보만 출력
'나의 수업일지' 카테고리의 다른 글
인천 일보 아카데미 27일차 -2- ERD란 ? / ERD 만들어보기 (0) | 2023.03.30 |
---|---|
인천 일보 아카데미 26일차 -2-서브쿼리 응용 / 제약조건 / 제약조건 확인 (0) | 2023.03.29 |
인천 일보 아카데미 25일차 -2 table_where-2 / table_like / 형변환 / 집계함수 / 그룹화 (1) | 2023.03.28 |
인천 일보 아카데미 25일차 - table_생성_사용하기 / table_where (조건 설정)/ table_distinct (중복제외) (1) | 2023.03.28 |
인천 일보 아카데미 24일차 - mysql , 데이터베이스란? , SQL 문법 분류/용어 , mysql 계정만들기 (0) | 2023.03.27 |