오라클에서 성적, 급여, 매출 등 순위를 구하기 위해서 순위 함수(RANK, DENSE_RANK)를 사용하면 된다. 순위 함수의 순위는 OVER 함수 내부의 ORDER BY 컬럼 값으로 결정된다. RANK() : 중복 순위 개수만큼 다음 순위 값을 증가 시킴 DENSE_RANK() : 중복 순위가 존재해도 순차적으로 다음 순위 값을 표시함 RANK와 DENSE_RANK 차이점은 아래 예제를 보면 쉽게 알 수 있다. SELECT ENAME , SAL , RANK() OVER (ORDER BY SAL DESC) RANK , DENSE_RANK() OVER (ORDER BY SAL DESC) DENSE_RANK FROM EMP ORDER BY SAL DESC RANK() 함수는 2순위가 2명 이므로 3순위를 ..
오라클에서 날짜의 월을 빼거나 더하기 위해서는 ADD_MONTHS 함수를 사용한다. 날짜의 일은 변경되지 않으며 연산값에 따라서 년도와 월만 변경이 된다. 함수를 사용하면서 주의할 점은 날짜의 이전달이나 다음달에 기준날짜의 일자가 존재하지 않으면 해당 월의 마지막 일자가 리턴된다. 예를 들어 "2019-03-31"의 이전달은 "2019-02-28"이 된다. ADD_MONTHS( '날짜', '숫자' ) 사용 방법 SELECT ADD_MONTHS(TO_DATE('2019-12-16','YYYY-MM-DD'),-1) PREV_MONTH --이전달 , ADD_MONTHS(TO_DATE('2019-12-16','YYYY-MM-DD'), 1) NEXT_MONTH --다음달 FROM DUAL 이전달 (월 빼기) 다음..
UPPER(대문자), LOWER(소문자) 변환 함수는 오라클에서 쿼리 작성시 꼭 필요한 함수 중 하나이다. 그리고 INITCAP 함수는 영문 단어의 첫 번째 문자를 대문자로 나머지 문자를 소문자로 변환하는 함수 이다. UPPER 함수 (대문자 변환) SELECT empno , UPPER(ename) AS ename , job FROM emp 특정 칼럼의 문자열을 대문자로 변환 한다 SELECT empno , ename , job FROM emp WHERE UPPER(ename) LIKE '%' || UPPER('Jones') || '%' 조건절에서 LIKE 연산자 사용시 대소문자 상관없이 검색할 때 사용할 수 있다. LOWER 함수 (소문자 변환) SELECT empno , LOWER(ename) AS ..
오라클 SQL에서 소수점 자리수를 지정하기 위해서 ROUND 함수를 사용한다. ROUND 함수는 특정 소수점을 반올림하고 나머지를 버리는 함수 이다. 소수점을 반올림하지 않고 절사만 원한다면 TRUNC 함수를 사용해야 한다. ROUND 함수- 함수 : ROUND("값", "자리수") 소수점 반올림-1 (소수점 첫째자리) SELECT ROUND(1235.543) --① , ROUND(1235.443) --② , ROUND(1235.443, 0) --③ FROM dual①,②,③ 모두 소수점 첫번째 자리수를 반올림 한다. ①은 소수점 첫번째 자리수가 5이므로 반올림 되었고, ②는 4이므로 그냥 버려졌다. ③은 ①,②와 동일하게 소수점 첫번째 자리수를 반올림하는 것이며 두번째 파라미터(0)은 생략이 가능하다...
오라클에서 특정 문자열을 치환하거나 제거하기 위해서는 REPLACE 함수를 사용하면 된다. 단순 문자열 치환 외에도 엔터값 제거, 전화번호 특수문자 제거 등 다양한 상황에서 사용할 수 있다. 오라클 10g부터 정규식 사용이 가능한 REGEXP_REPLACE 함수가 추가되었다. 목차 특정문자 치환 특정문자 제거 엔터값, 탭문자 제거 전화번호 구분자 제거 REGEXP_REPLACE 함수 (정규식) 특정문자 치환 SELECT REPLACE('Oracle Database', 'Oracle', 'Ora') AS result1 , REPLACE('Oracle Database', 'Database', 'DB') AS result2 , REPLACE('Oracle Database', 'D', 'd') AS result..
오라클에서 소수점을 절사(버림)하거나 날짜의 시간을 절사 하기 위해서는 TRUNC 함수를 사용한다. 소수점, 시간 등 단순한 절사 방법 외에 TRUNC 함수의 옵셥을 사용하여 다양한 절사 방법이 있으니 아래를 참고하면 된다. 목차 기본 사용법 시간 절사 방법 일자/요일 절사 방법 숫자/소수점 절사 방법 기본 사용법 기본 사용법 WITH temp AS ( SELECT TO_DATE('2018-12-13 22:10:59', 'YYYY-MM-DD HH24:MI:SS') dt, 1234.56 nmb FROM dual ) SELECT dt , TRUNC(dt) --시간 절사 , nmb , TRUNC(nmb) --소수점 절사 FROM temp 사용법 : TRUNC("값", "옵션") TRUNC 함수는 주로 소수점 ..
오라클 NVL, NVL2 함수 사용법 해당 칼럼의 값이 NULL 값인 경우 특정값으로 출력하고 싶으면 NVL 함수를 사용하고, NULL 값이 아닐 경우 특정값으로 출력하고 싶으면 NVL2 함수를 사용하면 된다. NVL 함수 NVL 함수는 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을 그대로 출력한다. - 함수 : NVL("값", "지정값") WITH emp AS ( SELECT 7839 empno, 'KING' ename, 'PRESIDENT' job, NULL comm FROM dual UNION ALL SELECT 7654 empno, 'MARTIN' ename, 'SALESMAN' job, 1400 comm FROM dual ) SELECT empno , ename , com..
오라클에서 수치값의 음수 부호를 제거하고 절댓값을 구하기 위해서는 ABS 함수를 사용하면 된다. 절댓값은 수치값의 부호를 뺀 값을 의미한다. 양수는 부호가 없기 때문에 그대로 출력되고 음수는 마이너스(빼기) 부호를 제거한 값이 출력된다. 절댓값 함수 : ABS("숫자") SELECT -10 AS result1 , ABS(-10) AS result2 FROM dual 절댓값 함수를 사용하면 음수 부호를 없애고 값을 반환하는 것을 확인할 수 있다. SELECT ABS(10) , ABS(12.5) , ABS(0) , ABS(-10) , ABS(-12.5) FROM dual 양수와 0은 그대로 출력되고 음수는 부호가 제거된 값이 출력되는 것을 확인할 수 있다.
오라클 11g부터 PIVOT 기능을 제공합니다. 기존 이하버전에서는 DECODE 함수를 이용하여 로우를 컬럼으로 변경하는 작업을 하였습니다. PIVOT 기능을 이용하면 DECODE의 복잡하고 비직관적인 코드를 조금 더 직관적으로 작성할 수 있습니다. 아쉬운 접은 PIVOT 기능을 사용하더라도 PIVOT을 할 컬럼을 미리 정의를 해 놓아야 한다는 점이다. 상황에 맞게 PIVOT를 사용할지 DECODE를 사용할지 결정해서 사용하면 될꺼 같습니다. SELECT * FROM ( 피벗 대상 쿼리문 ) PIVOT ( 그룹합수(집계컬럼) FOR 피벗컬럼 IN (피벗컬럼값 AS 별칭 ... ) PIVOT 사용법 직군별, 월별 입사 건수 SELECT * FROM ( SELECT job , TO_CHAR(hiredate,..
오라클에서는 문자열에서 원하는 문자를 찾을 때 INSTR 함수를 사용한다. INSTR 함수는 대소문자를 구별하여 문자를 검색하며, 여러 개의 문자를 찾을 때는 OR 연산자를 사용하면 된다. 해당 문자를 한번 찾으면 더 이상 검색을 하지 않기 때문에 필요에 따라서 뒤(마지막)에서 부터 검색을 할 수도 있다. INSTR ( [문자열], [찾을 문자 값], [찾기를 시작할 위치(1,-1)], [찾은 결과의 순번(1...n)] ) 기본 사용법 SELECT INSTR('Oracle Database', 'Database') AS result1 , INSTR('Oracle Database', 'Server') AS result2 FROM dual INSTR 함수는 문자열에서 문자를 찾으면 문자의 시작 위치를 반환한다..