SELECT ABS(-100),
ABS(0.00005),
SIGN(-100000),
SIGN(0),`
SIGN(0.000009),
SQRT(24),
POWER(2,10)
FROM DUAL;
(사용형식)
GREATEST(n1,n2[[,n3,...]), - 주어진 수 중 최대값 반환
LEAST(n1,n2[,n3,...]) - 주어진 수 중 최소값 반환
SELECT GREATEST('홍길동','김선동','홍길순');
LEAST('홍길동',57,'홍길순')
FROM DUAL;
Alias 회원번호,회원명,원래의마일리지. 변경마일리지
SELECT MEM_NAME
FROM MEMBER;
PRDER BY 2;
SELECT MEM_ID
MEM_NAME
MEM_MILEAGE
MEM_GREATEST
(사용형식)
ROUND(n[,l))
TRUNC(n,[,l])
SELECT ROUND(765265.56089,3),
TRUNC(765265.56089,3),
ROUND(765265.56089),
TRUNC(765265.56089),
ROUND(765265.56089,-2),
TRUNC(765265.56089,-2)
FROM DUAL;
보너스 = (급여*영업실적(COMMISSION_PCT))의 27%
지급액 = 급여+보너스
Alias는 사원번호, 사업명, 급여, 영업실적코드, 보너스, 지급액
단, 보너스와 지급액은 정수로 표현 (소수 펏자리에서 반올림)
COMMISION_PCT는 2자리인데 소숫점이하가 2자리니까 정수부분 없음.
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
SALARY AS 급여,
COMMISION_PCT AS 영업실적코드,
NVL(ROUND(((SALARY*COMMISION_PCT)*0.27),0),0) AS 보너스,
ROUND(SALARY +NVL(((SALARY*COMMISION_PCT)*0.27),0),0) AS 지급액
FROM HR.EMPLOYEES;
왜 안돌아가ㅜ
(사용형식)
MOD(n,m)
- 주어진 수 n을 m으로 나눈 나머지 반환
SELECT MEM_NAME AS 회원명,
MEM_BIR AS 생년월일,
TRUNC((TRUNC(SYSDATE)-TRUNC(MEM_BIR))/7) || '주' ||
MOD (TRUNC(SYSDATE)-TRUNC(MEM_BIR),7) || '일 경과'
FROM MEMBER;
(사용형식)
CEIL(n), FLOOR(n)
- CEIL(n): n과 같거나 (n이 정수일때) 큰쪽에서 가장 가까운(제일작은)정수 반환
- FLOOR(n): n과 같거나(n이정수일때) 작은쪽에서 가장 가까운(제일 큰) 정수 반환
SELECT CEIL(9.2345),CEIL(9),CEIL(-9.2435),
FLOOR(9.2435),FLOOR(9),FLOOR(-9.2435)
FROM DUAL;
(사용예시)
SELECT
MOD(29.7):29-(7*FLOOR(29/7))
29-(7*FLOOR(4.143))
29-(7*4)
29-28 => 1
REMAINDER(29,7) : 29 - (7*ROUND(29/7))
29-(7*ROUND(4.143))
29-(7*4)
29-28 => 1
MOD와 REMAINDER는 둘다 나머지지만 알고리즘이 다르므로 다른값이 나온다
MOD(26,7):26-(7*FLOOR(26/7))
26-(7*FLOOR(3.714))
26-(7*3)
26-21 => 5
REMAINDER(26,7) : 26 - (7*ROUND(26/7))
26-(7*ROUND(3.714))
26-(7*4)
26-28 => -2
SELECT WIDTH_BUCKET(86,10,90,9),
WIDTH_BUCKET(5,10,90,9),
WIDTH_BUCKET(90,10,90,9)
FROM DUAL;
Alias는 회원번호, 회원명, 마일리지, 등급
'등급'란에 구간 인덱스를 구하되 많은 마일리지를 보유한 회원이 작은 수의 등급을, 제일 적은 마일리지를 보유한 회원이 제일 큰 등급을 부여할것
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지,
10-WIDTH_BUCKET(MEM_MILEAGE,1000,8000,8) AS 등급
FROM MEMBER;