1. insa.sql을 실행해 insa 테이블을 생성하시오.
select * from insa where city ='서울' and basicpay>=1500000;
2.출신도가 서울이면서 기본급이 150만원 이상인 사람 출력 (name, city, basicpay, ssn)
select * from insa where city='인천' and basicpay between 1000000 and 2000000;
3. 출신도가 '인천' 이면서, 기본급이 100만원~200만원인 경우만 출력.
select name, city, buseo from insa where city in('서울','인천','경기' ) order by city;
4. 출신도가 서울, 인천, 경기인 사람만 출력 (name, city, buseo). 출신도로 정렬
select name, ssn from insa where ssn like '_______1%' or ssn like '_______3%' order by ssn;
5. 주민번호를 기준으로 남자(성별란이 1, 3)만 출력. (이름, 주민번호(ssn)). 주민번호 순 정렬
select name, ssn from insa where ssn like '8%';
6. 80년대 태어난 사람만 출력. (이름, 주민번호(ssn)).
select * from insa where city = '서울' and substr(ssn, 1,1)='7';
7. 서울 사람 중에서 70년대 태어난 사람만 출력. SUBSTR() 함수 이용.
select * from insa where city = '서울' and substr (ssn, 1,1)='7' and substr(ssn, 8,1) in (1,3);
9. 서울 사람이면서 김씨만 출력(성씨가 1자라는 가정). (이름, 출신도).
SUBSTR() 함수 이용.
select name, city from insa where city = '서울' and substr(name, 1,1) = '김';
10. 2000년도에 입사한 사람 출력. (이름, 출신도, 입사일). TO_CHAR() 함수 이용.
select name, city, ibsadate from insa where to_char(ibsadate, 'yyyy') = '2000';
11. 2000년 10월에 입사한 사람 출력. (이름, 출신도, 입사일).
select name, city, ibsadate from insa where to_char(ibsadate, 'yyyymm') = '200010';
12. 주민번호를 기준으로 직원의 나이 구하기(단, 모든 직원이 1900년대에 태어났다는 가정). (이름, 주민번호, 나이)
select name, ssn, 2014-substr(ssn, 1,2)-1900 나이 from insa;
13. 주민번호 기준으로 현재 나이대가 20대인 사람만 출력.
select * from insa where (2014-substr(ssn, 1,2)-1900)>=20 and (2014-substr(ssn, 1,2)-1900)<30 ;
14. 주민번호 기준으로 5월달생만 출력
select * from insa where ssn like '___5%';
15. 여자 중 부서 오름차순으로 정렬하고, 부서가 같으면 기본급 내림차순 정렬. (이름, 주민번호, 부서, 기본급)
select name, ssn, buseo, basicpay from insa where substr(ssn,8,1)='2' order by buseo, basicpay desc;
16. 성씨가 김씨가 아닌 사람을 이름 출력. (이름, 출신도, 기본급).
select name, city, basicpay from insa where substr(name, 1,1) not in '김';
17. 출신도가 서울, 부산, 대구 이면서 전화번호가 011,016,017,019로 시작하는 사람 출력.
부서명의 마지막 부는 출력되지 않도록 하시오. rtrim사용
(이름, 출신도, 부서명, 전화번호)
select name, city, rtrim(buseo,'부') 부서, tel from insa where city in ('서울','부산','대구') and substr(tel, 1,3) in
('011','016','017','019');
18. 전화번호가 있으면 '-'을 제거하고 출력하고, 없으면 '전화번호없음'을 출력. nvl, translate 또는 replace 사용
select nvl(TRANSLATE(tel, '0123456789'||tel, '0123456789'),'전화번호없음') 전화번호 from insa;
19. gogek테이블에서 주민번호를 출력. 뒷 7자리는 *로 출력
select substr(gojumin, 1, 7)||'*******' 주민번호 from gogek ;
20. employees 테이블에서 매니저가 없거나 소속 부서가 없는 사원의 정보 조회
select * from employees where (DEPARTMENT_ID is null ) or (manager_id is null);
21. emp 테이블에서 커미션을 받는 사원들의 정보를 조회
-- 3명 나와야 됨
select * from emp where comm >0;
22. emp테이블에서 컬럼 별칭을 사번, 이름, 부서번호, 연봉으로 해서 조회하시오. 연봉은 sal와 comm의 합을 월급
으로 해서 12를 곱하시오. 부서번호 내림차순, 연봉 오름차순으로 정렬해 출력하시오
select empno 사번, ename 이름, deptno 부서번호, (sal+nvl(comm, 0))*12 연봉 from emp order by deptno desc, (sal+nvl(comm, 0))*12;
23. emp테이블에서 이름과 근무기간을 출력하시오. 근무기간은 "34년 10개월"과 같은 형식으로 하시오.
-- 나머지를 구하는 함수는 mod
select ename 이름, trunc((sysdate-hiredate)/365,0)||'년'||trunc(mod((sysdate-hiredate),365)/30,0)||'개월' 근무기간 from emp;
'개발메모장' 카테고리의 다른 글
SQL 예제2 (0) | 2014.12.18 |
---|---|
SQL 날짜 관련 명령어, 그룹함수, 조건명령문 (0) | 2014.12.18 |
SQL 문자관련 명령어 (0) | 2014.12.18 |
SQl 기본명령어3 (0) | 2014.12.18 |
SQL Contraint(제약조건) (0) | 2014.12.18 |