새소식

JAVA 교육/Sql

2019/07/22 오라클 함수

  • -

[전 수업] 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 ;

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.