문제
1. VIEW_EMP1에서 고용일이 2000년 이후이고 급여가 350만원 이상인 사원을 조회하시오.
2. VIEW_EMP2에서 업무(job)가 특수영업인 사원을 조회하시오.
3. VIEW_EMP3에서 생일이 1999년도인 사원을 조회하시오.
4. VIEW_EMP1에서 고용인원수, 평균급여, 최저급여, 최고급여를 조회하시오.
5. VIEW_EMP2에서 업무(job)가 ‘품’이들어간 사원을 모두 조회하시오.
6. VIEW_EMP3에서 1995~1999년 사이에 태어난 사원수와 총예산을 표시하시오.
힌트
1. 타입이 맞지 않는다면 '00/12/31' 이후로 하여 조회한다.
여러개의 조건을 이용시 and 을 사용한다.
2. 한글로 조회 시 작은 따옴표(' ')로 감싸야 한다.
3. 특정 문자만 잘라 사용하고 싶다면 substr을 사용한다.
substr(속성명, 시작위치, 길이)
4. 수를 알기 위해선 count를 사용한다.
평균의 경우 avg
최저의 경우 min
최고의 경우 max
5. 특정 단어가 포함된 것을 조회할 때는 like 와 %를 사용한다.
6. 조회한 것만 보고자 한다면 select * 대신 select 보고자 하는 테이블로 확인한다.
제공되는 테이블과 데이터
-- 테이블 생성
create table emp (
empid char(6) not null,
name varchar2(20) not null,
dept varchar2(20) not null,
hire_date date,
birthday varchar2(20),
address varchar2(50),
job varchar2(20),
salary number(10),
constraint pk_emp primary key(empid)
);
-- 테이블 조회
select * from emp;
-- 데이터 삽입
INSERT INTO EMP(EMPID,NAME,DEPT,HIRE_DATE,BIRTHDAY, ADDRESS, JOB, SALARY)
VALUES('1006','김민수','개발부',SYSDATE,'1985.10.12','대전시 서구 갈마로29', 'ERP프로그램', 350);
INSERT INTO EMP(EMPID,NAME,DEPT,HIRE_DATE,BIRTHDAY, ADDRESS, JOB, SALARY)
VALUES('1002','곽희준','영업부',SYSDATE,'1985.10.12','서울시 동작구 노량진로100', '특수영업', 400);
INSERT INTO EMP(EMPID,NAME,DEPT,HIRE_DATE,BIRTHDAY, ADDRESS, JOB, SALARY)
VALUES('1003','김동준','생산부',SYSDATE,'1985.10.12','부산시 남구 해운대로15', '품질관리', 300);
INSERT INTO EMP(EMPID,NAME,DEPT,HIRE_DATE,BIRTHDAY, ADDRESS, JOB, SALARY)
VALUES('1004','성재규','인사부',SYSDATE,'1999.08.10','대구시 중구 달성로 300', '급여관리', 450);
INSERT INTO EMP(EMPID,NAME,DEPT,HIRE_DATE,BIRTHDAY, ADDRESS, JOB, SALARY)
VALUES('1005','박성범','구매부',SYSDATE,'1985.10.12','대전시 중구 계룡로800', '수입자재', 320);
1번 문제
-- 1. VIEW_EMP1에서 고용일이 2000년 이후이고 급여가 350만원 이상인 사원을 조회하시오.
select * from view_emp1
where
HIRE_DATE > '00/12/31'
and
SALARY >= 350;
2번 문제
-- 2. VIEW_EMP2에서 업무(job)가 특수영업인 사원을 조회하시오.
select * from view_emp2
where
JOB = '특수영업';
3번 문제
-- 3. VIEW_EMP3에서 생일이 1999년도인 사원을 조회하시오.
select * from view_emp3
where
SUBSTR(BIRTHDAY, 1, 4) = '1999';
substr(속성명, 시작위치, 길이)
4번 문제
-- 4. VIEW_EMP1에서 고용인원수, 평균급여, 최저급여, 최고급여를 조회하시오.
-- 고용인원수
select count(*) from view_emp1;
-- 평균급여
select avg(SALARY) from view_emp1;
-- 최저급여
select min(SALARY) from view_emp1;
-- 최고급여
select max(SALARY) from view_emp1;
select count(*) 고용인원수, avg(SALARY) 평균급여, min(SALARY) 최저급여, max(SALARY) 최고급여 from view_emp1;
select count(*) 고용인원수, round(avg(SALARY)) 평균급여, min(SALARY) 최저급여, max(SALARY) 최고급여 from view_emp1;
-- round를 사용하지 않아도 괜찮지만 소수점을 위해 round를 사용해야 함
avg(속성명) : 평균
min(속성명) : 최저
max(속성명) : 최고
5번 문제
-- 5. VIEW_EMP2에서 업무(job)가 ‘품’이들어간 사원을 모두 조회하시오.
select * from view_emp2
where
job like '%품%';
속성명 like '%문자%' ;
와일드 카드(%)가 뒤에만 있다면 첫글자는 문자 여야 한다.
6번 문제
-- 6. VIEW_EMP3에서 1995~1999년 사이에 태어난 사원수와 총예산을 표시하시오.
select count(*) 인원수, (count(*)*100) 총예산
from view_emp3
where
substr(BIRTHDAY, 1, 4) between 1995 and 1999;
select count(*) 인원수, (count(*)*100) 총예산
from view_emp3
where
BIRTHDAY >= '1995.01.01' and BIRTHDAY <= '1999.12.31';
속성명 between 비교값1 and 비교값2 ;
'데이터베이스' 카테고리의 다른 글
[Database] 5장 관계형 DB 데이터모델링 (0) | 2023.12.06 |
---|---|
[Database] 4장 관계형 데이터베이스 및 제약조건 (0) | 2023.12.06 |
[Database] 3장 키(key) 종류와 뷰(view) 생성 및 활용 (2) | 2023.12.05 |
[Database] 2.5장 테이블 조회 테스트 (2) | 2023.12.05 |
[Database] 2장 테이블 생성, 수정, 삽입, 삭제 (0) | 2023.12.04 |