숫자형 함수(mod, remainder, CEIL(N), FLOOR(N), WIDTH_BUCKET)
mod, remainder
-나머지 값을 반환
1)mod(c,o)
.주어진 수C를 N으로 나눈 나머지 반환
.JAVA언어의 %연산자와 같은 기능
사용예) 2000년 2월 23일이 무슨 요일인지 구하시오.
--SELECT CASE MOD((TO_DATE('20000223') - TO_DATE('00010101')-1),7)
SELECT CASE MOD((TRUNC(SYSDATE) - TO_DATE('00010101')-1),7)
WHEN 1 THEN '월요일'
WHEN 2 THEN '화요일'
WHEN 3 THEN '수요일'
WHEN 4 THEN '목요일'
WHEN 5 THEN '금요일'
WHEN 6 THEN '토요일'
ELSE '일요일' END AS 요일
TRUNC(SYSDATE)-TO_DATE('00010101')-1 AS 일수
FROM DUAL;
REMAINDER(C,N)
.C를 N으로 나눈 나머지 반환
.내부적으로 MOD와 다른 방법으로 처리하여 다른 결과 반환
.MOD : 나머지 = C - N*FLOOR(C/N)
REMAINGER : 나머지 = C - N*ROUND(C/N)
예)13/5의 나머지
1)MOD : 13 - 5*FLOOR(13/5)
13 - 5*FLOOR(2.6)
13 - 5*2 => 3
2)REMAINDER
13 -5*ROUND(13/5)
13 -5*ROUND(2.6)
13 -5*3 => 1
예)11/5의 나머지
1)MOD : 11 - 5*FLOOR(11/5)
11 - 5*FLOOR(2.2)
11 - 5*2 => 1
2)REMAINDER
11 -5*ROUND(11/5)
11 -5*ROUND(2.2)
11 -5*3 => 1
SELECT MOD(11,5),REMAINDER(11,5) FROM DUAL;
CEIL(N), FLOOR(N)
-주어진 수 N에 가장 근접한 정수를 반환
-CEIL은 N과 같거나 큰 수 중 가장 작은 정수
-FLOOR는 N과 같거나 작은 수 중 가장 큰 정수
EX) CEIL(23.56) -> 24, CEIL(-23.56) -> -23
FLOOR(23.56) -> 23, FLOOR(-23.56) -> -24
WIDTH_BUCKET
-주어진 최소값과, 최대값을 몇개의 그룹으로 나누고 제시된 값이 어느 그룹에 속하는 지를 반환
(사용형식)
WIDTH_BUCKET(C,MIN,MAX,B)
.C : 주어진 수
.MIN : 구간의 하한 값
.MAX : 구간의 상한 값
.B : 구간의 수
사용예) 사원테이블에서 사원의 급여에 따른 등급을 구하여 출력하시오
급여를 2000부터 20000까지 9개 등급으로 나누고 급여가
많은 사원이 작은 등급을 부여받도록 하시오
ALIAS는 사원번호, 사원명, 급여, 등급
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
SALARY AS 급여,
-- 11-WIDTH_BUCKET(SALARY,2000,20000,9)||'등급' AS 등급
WIDTH_BUCKET(SALARY,20000,2000,9)||'등급' AS 등급
FROM EMPLOYEES;
예)회원테이블에서 회원들의 ㅏ일리지를 기준으로 증급을 구하고 등급이 1~1등급
회원은 'VIP회원', 3~5등급 회원은 '일반회원', 그 이하 회원은 '준회원'
이라는 문자열을 비고난에 출력하시오 단, 구간은 마일리지 값을 500에서
8000까지8개 구간으로 나누고 마일리지가 많은 회원의 등급이 작은 값을
나타내도록 한다.
ALIAS 는 회원번호, 회원명, 마일리지, 등급, 비고
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지,
WIDTH_BUCKET(MEM_MILEAGE, 8000,500,8)AS 등급,
CASE WHEN WIDTH_BUCKET(MEM_MILEAGE, 8000,500,8)BETWEEN
0 AND 2 THEN 'VIP회원'
WHEN WIDTH_BUCKET(MEM_MILEAGE, 8000,500,8)BETWEEN
3 AND 5 THEN '일반회원'
ELSE '준회원' END AS 비고
FROM MEMBER;
'DB > SQL(오라클)' 카테고리의 다른 글
오라클(SQL)형변환 함수(CAST,TO_CHAR, TO_NUMBER, TO_DATE) (0) | 2021.03.15 |
---|---|
오라클(SQL)날짜함수(SYSDATE, NEXT_DAY(D,C), LAST_DAY(D), EXTRACT(FMT,FROM D)) (0) | 2021.03.12 |
오라클(SQL)숫자형 함수 (0) | 2021.03.12 |
오라클(SQL)숫자형 함수 (0) | 2021.03.12 |
오라클(SQL)문자열 함수(SUBSTR, REPLACE, INSTR, (LENGTH, LENGTHB)) (0) | 2021.03.12 |