*숫자함수
1.round -> 반올림하는 함수
2.trunc -> 반올림안하고 잘라내는 함수
3.mod -> 나눈 나머지값을 출력하는 함수
round.
select round(785.878,1)
from dual;
7 8 5 . 8 7 8
0 1 2 3 (. 있는데가 0기준.)
=> 그래서 이렇게 하면 결과값이 785.6
듀얼은 뭐야?? 결과값을 보기 위한 가상의 테이블.
select round(785.878,2)
from dual;
785.88
select round(785.878,0)
786이 나옴.. 이거 !! 기억!!!
문제36.이름,월급,월급* 0.24를 출력하는데 소숫점이하는 안나오게 반올림해서 출력하시오.
[진실이가 필기 보내준거 컨트롤 씨 컨트롤 쁘이]
☞round
select round (785. 878, 1)
from dual;
select round (785. 878, 0)
from dual;
=select round (785. 878)
from dual;
7 8 5 . 8 7 8
0 1 2 3
dual ~> 결과값을 보기 위한 가상의 테이블
문제36. 이름,월급, 월급*0.24를 출력하는데 소숫점이하는 안나오게 반올림해서 출력하시오!
select ename, sal, round(sal*0.24,0)
from emp;
☞ trunc
select trunc(785.878,0)
from dual;
반올림 안하고 버림
++++++++++++++++++++++++++++++
날짜함수가 중요하다!!!
날짜함수
1. 날짜 - 날짜 = 숫자
2. 날짜 - 숫자 = (오늘날짜에서 하루를 빼거나 그러면) 날짜
3. 날짜 + 날짜 = 날짜
->오늘 날짜를 보는 방법
select sysdate
from dual ;
문제37. 이름,입사일,입사한 날짜부터 오늘까지 총 몇일 근무했는지 출력하시오.
select ename,hiredate,sysdate-hiredate
from emp;
m
문제38.위의 결과에서 소숫점 이하는 안나오게 반올림하시오.
select ename,hiredate,round(sysdate-hiredate,0)
from emp;
문제39.위의 결과를 다시 출력하는데 총 몇달 근무했는지 출력하시오.
select ename,hiredate,round(sysdate-hiredate,0) / 30?31?
그리고 2월은 28일인데? 3-28쪽 슬라이드에 함수를 ㅆ ㅓ야되
이 함수 -> months_between (날짜와 날짜사이의 개월수를 출력하는 함수)
이 함수쓸 때 주의점은 최근날짜를 앞에 오래된 날짜를 뒤에.
select ename,months_between(sysdate,hiredate)
from emp;
ㅋㅋ 위에 sysdate-hiredate 가 아님..
문제40.이름,입사한 날짜부터 오늘까지 받은 총 급여를 출력하시오.
select ename,months_between(sysdate,hiredate) * sal
add_months -> 날짜에서 개월수를 더한 날짜를 출력.
문제41.오늘날짜에서 100달뒤의 날짜가 무엇인가?
select add_months(sysdate,100)
from dual;
next_day -> 지정된 날짜에서 지정된 요일에 돌아오는 날짜를 출력.
문제42.오늘날짜에서 앞으로 돌아올 금요일의 날짜를 출력하시오.
select next_day(sysdate,'금요일')
from dual;
문제43.오늘날짜에서 앞으로 돌아올 목요일의 날짜를 출력하시오.
select next_day(sysdate,'목요일')
from dual;
->함수를 중첩해서 사용할 수 있다.
문제44.오늘부터 100달 뒤에 돌아오는 월요일의 날짜를 출력하시오.
select next_day(add_months(sysdate,100),'월요일')
from dual;
이런 식으로 문제를 내면 여러분이 적으면 된다.그래서 평상시에 많이 돌려보면 된다.
last_day -> 지정된날짜의 달의 마지막 날짜를 출력하는 함수.
문제45.요번달의 마지막 날짜를 출력하시오.
select last_day(sysdate)
from dual;
문제46.오늘부터 요번달 말일까지 총 몇일 남았는지 출력하시오.
select last_day(sysdate)-sysdate
from dual;
변환함수
->형 (data type)
1.문자형 2.숫자형 3.날짜형
형변환 2가지
1.암시적 변환
select ename,sal
from emp
where sal = 3000;
숫자 숫자 (숫자끼리 비교하니까 결과가 나와)
select ename,sal
from emp
where sal = '3000';
숫자 문자 ('' <- 이거 썼다는거는 문자로 인식해라! 얘기!)
저거 두개 결과 다 나옴. 어 근데.. 왜 숫자,문자 이거는 안나올것같은데 왜나오지?? 오라클은 나온대. 암시적으로 형 변환을 한데. 명시적으로 문자를 썼지만 아~ 주인님 잘못썻구나 하면서 알아서 바꿔준대. 그러니까 이게 사용자 관점에서 편의를 위해서 했는데, 내부적으로 저런 변환하는 과정이 성능적으로 악화.그래서 사용하는 우리는 성능을 위해서 지켜줘야 한다.숫자는 숫자,문자는 문자.
2.명시적 형변환(168/332)
1.to_char
2.to_number
3.to_date
select ename,sal,to_char(sal)
from emp;
이렇게 하면 sal을 문자로 출력하겠다는 것.실제로 근데 출력해보면
5000,5000 똑같이 나오는데 오른쪽 5000은 이때 문자.
select ename,sal,to_char(sal,'999,999')
포맷 '999,999'이렇게 형식을 주면 이 자리에 0~9까지 나타내는거고
,를 찍어주니까 숫자에 편리하게 나오는거
문제47. 이름,우러급,월급*56000 출력하는데 월급*56000의 결과를 출력할때에 천단위와 백만단위를 표시하시오.
select ename,sal,to_char(sal*56000,'999,999,999')
from emp;
날짜를 문자로 변환하는 것.
select ename,hiredate,to_char(hiredate)
from emp;
이렇게 의미없이 출력될거다.
문제48. 이름,입사일,입사한 년도 4자리를 출력하시오
select ename,hiredate,to_char(hiredate,'RRRR')
from emp;
연도 : RRRR,YYYY,RR,YY
달 : MM,MON
일 DD
시간 HH24
분 MI
초 SS
요일 DAY
문제49.이름,입사일,입사한 요일을 출력하시오.
select ename,hiredate,to_char(hiredate,'day')
from emp;
스터티 과제 :
주제: 1.주제를 받고 2.스터티를 하고 3.ppt생성해서 토요일밤까지 메일로
제출하고 (ppt 앞에 조원들 그게있어야 한다.) oracleyu23@gmail.com
4.그리고 평가 발표를 한다. 다 발표하지는 않고 몇명 뽑아서.
주제는 1나다. 날짜형식중에 하나 안쓴게 있는데 ww와 iw의 차이를 설명하고
실습자료를 생성하시오.
이 ww가 주 라는 의미인데, 이걸 스터디 하시고
그리고 수업시간에 배웠던 내용중에 선별해서 ppt 생성 발표하고
이론도 하고 실습도 하고 두가지를 해야 된다.꼭해야된다.
토요일 저녁까지 밤까지 메일로 제출해라.
'디비1' 카테고리의 다른 글
디비1 - 4월6일월요일 - group 함수 (0) | 2015.04.06 |
---|---|
디비1 - 3월30일 월요일 - 날짜형식,nvl,decode,case함수 (0) | 2015.03.30 |
디비1 3월16일 월요일 (0) | 2015.03.16 |
3월 9일 월요일 (0) | 2015.03.09 |
1회 - 3월 2일 월요일 (0) | 2015.03.03 |