[전 수업] SQL활용 연습문제를 풀어보았다
[본 수업] 어떤 오라클 함수가 있나 공부해보고 연습문제를 풀어보자
1. ASCII문자변환
select chr(65) from dual; select chr(97) from dual;
2. ||결합연산자
select ename || '의 직급은' || job || '입니다'
from emp;
3. concat(칼럼명,'문자열')
select concat(ename,'의 직급은 '),job
from emp;
4. sysdate
select sysdate from dual;
select sysdate+100 from dual;
select sysdate-100 from dual;
5. rownum : 행(레코드) 번호 rowid : 행(레코드)의 주소값 의사칼럼(모조칼럼)
select empno, ename from emp;
select rownum, empno, ename from emp;
select rowid,empno, ename from emp;
select rowid,rownum,empno, ename from emp;
6. 두 날짜 사이의 개월 수 계산 함수
select months_between('2019-09-01','2019-07-05')
from dual;
7. to_date('날짜문자열')
select to_date('2019-05-20')-to_date('2019-05-05')
from dual;
8. to_char(날짜,'출력형식')
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss day')
from dual;
9. 숫자변환 함수
select 100+10, 100-10, 100*10, 100/10
from dual;
select '100'+1 from dual;
select to_number('100')+1 from dual;
10. 숫자함수
trunc (숫자1,자리수)
->버림, 숫자1을 소수점 자리수에서 절사
round (숫자1,자리수)
->숫자1을 소수점 자리수에서 반올림
ceil (숫자1)
->올림
11.
select avg(sal) 평균
,sum(sal) 합계
,max(sal) 최대값
,min(sal) 최솟값
,count(sal) 갯수--null은 카운트 안함
from emp;
12. 문)각 직원들에 대해서 직원의 이름과 근속연수를 구하시오
단, 근속연수는 연단위를 버림하여 나타내시오
1. select ename,sysdate-hiredate from emp;
2. select ename,sysdate-hiredate)/365 as 근속연수
from emp;
3. select ename,trunc((sysdate-hiredate)/365) as 근속연수
from emp;
4. select ename,trunc((sysdate-hiredate)/365,2) as 근속연수
from emp;
※순서대로 코딩을 하는 습관을 가져보자
13. 예
1. select substr('8912303',7,1) from dual;
2. select decode(substr('8912303',7,1),3,'남','여')
from dual;
14. 문2) 각 직원의 이름 직급 급여를 나타내는데
단 급여는 5자리로 나타내며 부족한 자리수는 '*'로 표시한다
월급이 300이상인 직원만 나타내시오
select ename, job, lpad(sal,5,'*')
from emp
where sal>=300;
15. 문)각 직원들에 대해서 직원의 이름과 근무개월수를 나타내는데
근무개월수가 100개월 이상인 직원만 나타내시오
금주 개월수는 소수 부분을 제외한 정수부분만 나타내시오
select ename,trunc(months_between(sysdate,hiredate),0) 개월수
from emp
where months_between(sysdate,hiredate)>=100;
16.문) 전체 직원에 대하여 직원의 이름과 직급, 총 근무주(week)수 를 구하시오
(단, 근무주수가 많은 직원부터 나타내고, 근무주수가 같으면 이름에 대하여 오름차순 정 렬하시오)
select ename,sal,trunc((sysdate-hiredate)/7,0) 근무주수
from emp
order by 근무주수 desc,ename ;