본문 바로가기

📚Study Note/ORACLE

(44)
[ ORACLE ] RANK() DENSE_RANK() -- ● 문제 -- 서브쿼리를 활용하여 TBL_SAWON 테이블을 다음과 같이 조회할 수 있도록 한다. /* ------------------------------------------------------------------ 사원명 성별 현재나이 급여 나이보너스 ------------------------------------------------------------------ 단, 나이보너스는 현재 나이가 40세 이상이면 급여의 70% 30세 이상 40 세 미만이면 급여의 50% 20세 이상 30세 미만이면 급여의 30% 또한, 완성된 조회 구문을 기반으로 VIEW_SAWON2 라는 이름의 VIEW 를 생성한다. */ CREATE OR REPLACE VIEW VIEW_SAWON2 AS SELECT..
[ ORACLE ] SUB_QUERY, CREATE AND REPLACE 'VIEW' SELECT T.연봉 * 2 "연봉두배" FROM { SELECT 연봉 FROM TBL_EMP }T; --● 문제 -- TBL_SAWON 테이블을 활용하여 다음과 같은 항목들을 조회한다. -- 사원번호, 사원명, 주민번호, 성별, 현재나이, 입사일, -- 정년퇴직일, 근무일수, 남은일수 , 급여, 보너스 -- 단, 현재나이는 한국나이 계산법에 따라 연산을 수행한다. -- 또한 , 정년퇴직일은 해당 직원의 나이가 한국나이로 60 세가 되는 해(년도)의 -- 그 직원의 입사 월, 일로 연산을 수행한다. -- 그리고 보너스는 1000일 이상 2000일 미만 근무한 사원은 -- 그 사원의 원래 급여 기준 30% 지급 -- 2000일 이상 근무한 사원은 그 사원의 원래 급여 기준 50% 할 수 있도록 처리한다. ..
[ ORACLE ] CASE 구문(조건문, 분기문 ) / CASE WHEN THEN ELSE END 구문 DECODE() -- ■■■ CASE 구문(조건문 , 분기문)■■■ /* CASE WHEN THEN ELSE END 구문으로 부른다. 케이스웬덴엘스엔드 */ SELECT CASE 5+2 WHEN 7 THEN '5+2=7' ELSE '5+2는 몰라요' END "결과 확인" FROM DUAL; --==>> 5+2=7 SELECT CASE 5+2 WHEN 9 THEN '5+2=9' ELSE '5+2는몰라요' END "결과확인" FROM DUAL; --==>>5+2는몰라요 SELECT CASE 1+1 WHEN 2 THEN '1+1=2' WHEN 3 THEN '1+1=3' WHEN 4 THEN '1+1=4' ELSE '몰라' END "결과 확인" FROM DUAL; --==>> 1+1=2 -- ● DECODE() SELECT D..
[ ORACLE ] 변환함수 TO_CHAR() TO_DATE() TO_NUMBER() EXTRACT() TO_YMINTERAL() TO_DSINTERVAL() -- ■ 변환 함수 /* TO_CHAR() : 숫자나 날짜 데이터를 문자 타입으로 변환시켜주는 함수 TO_DATE() : 문자 데이터(날짜 형식)를 날짜 타입으로 변환시켜주는 함수 TO_NUMBER() : 문자 데이터(숫자 형식)를 숫자 타입으로 변환시켜주는 함수*/ SELECT 10 "숫자 10이다", TO_CHAR(10) "문자형태의 10이다" FROM DUAL; --==>> (우측정렬)(좌측정렬) 1010 -- ※ 날짜나 통화 형식이 맞지 않을 경우 세션 설정값을 통해 -- 설정할 수 있도록 한다, ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN'; --===>>Session이(가) 변경되었습니다. ALTER SESSION SET NLA_LANGUAGE = 'KOR..
[ ORACLE ] 날짜연산, ADD_MONTH() MONTHS_BETWEEN NEXT_DAY() LAST_DAY() 날짜ROUND() 날짜TRUNC() -- ※ 날짜 관련 세션 설정 변경 ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'; --==>>Session이(가) 변경되었습니다. -- ※ 날짜 연산의 기본 단위는 DAY(일수) 이다. ★ SELECT SYSDATE, SYSDATE+1, SYSDATE-2, SYSDATE+3 FROM DUAL; /* 2021-03-29 12:04:08-- 현재 2021-03-30 12:04:08-- 1일 후 2021-03-27 12:04:08-- 2일 전 2021-04-01 12:04:08 -- 3일 후 */ -- ○ 시간 단위 연산 SELECT SYSDATE, SYSDATE + 1/24, SYSDATE - 2/24 FROM DUAL; /* 2021-03-29..
[ ORACLE ] ROUND() TRUNC() MOD() POWER() SQRT() LOG() SIN/ASIN() COS/ACOS() TAN/ATAN() SIGN() ASCII() CHR() -------------------------------------------------------------------------------- -- 숫자형 함수 --● ROUND() 반올림 처리해주는 함수 SELECT 48.678 "1" , ROUND(48.678,2) "2" --- 소수점 둘째자리까지 표현 , ROUND(48.674,2) "3" , ROUND(48.678,1) "4" , ROUND(48.678,0) "5" , ROUND(48.678) "6" , ROUND(48.678,-1) "7" -- 10의 자리까지 유효한 표현 , ROUND(48.678,-2) "8" , ROUND(48.678,-3) "9" FROM DUAL; --==>>48.67848.6848.6748.749495000 -- ●..
[ ORACLE ] LPAD() RPAD() LTRIM() RTRIM() TRANSLATE() REPLACE() LTRIM('ORAORAORACLEORACLE','ORA') → CLEORACLE -- ● LPAD() -- ★ 두 번째 파라미터 값부터 보기 --> Byte 공간을 확보하여 왼쪽부터 문자로 채우는 기능을 가진 함수 SELECT 'ORACLE' "1" , LPAD('ORACLE', 10, '*') "2" FROM DUAL; --==>> ORACLE****ORACLE ⓐ 10 Byte 공간을 확보한다. ⓑ 확보한 공간에 'ORACLE' 문자열을 담는다. ⓒ 나머지 빈 공간에 * 채운다. -- ● RPAD() --> Byte 공간을 확보하여 오른쪽부터 문자로 채우는 기능을 가진 함수 SELECT 'ORACLE' "1" , RPAD('ORACLE', 10, '*') "2" FROM DUAL; --==>> OR..
[ ORACLE ] 4일차 - LENGTH() LENGTHB(), INSTR(), REVERSE(), LENGTH(SMITH) → 5 LENGTHB('자두') → 6 (바이트 수니까) INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 2) → 8 : 인덱스 1에서부터 2번째 등장하는 ORA를 찾는다. REVERSE('ORACLE') → ELCARO SELECT USER FROM DUAL; --===>>SCOTT -- ○ TBL_SAWON 테이블에서 성별이 남성인 사원만 -- 사원번호, 사원명, 주민번호 , 급여 항목을 조회한다. -- 단, SUBSTR() 함수를 사용할 수 있도록 하며. -- 급여 기준으로 내림차순 정렬을 수행할 수 있도록 한다. SELECT 사원번호, 사원명, 주민번호, 급여 FROM TBL_SAWON WHERE 성별이 남성(주민번호 7번째 자리 1개가 1 OR 3..