오라클에서 숫자, 금액 등 수치 값에 천 단위로 콤마(쉼표)를 추가하기 위해서는 TO_CHAR 함수를 많이 사용한다. TO_CHAR 함수는 수치 값의 최대 길이를 예측 가능한 경우 오류 없이 사용할 수 있으며, 수치 값의 최대 길이를 예측하기 힘든 경우 정규식 함수를 사용하여 천 단위로 콤마를 추가할 수 있다. 목차 TO_CHAR 함수를 사용하는 방법 정규식 함수를 사용하는 방법 TO_CHAR 함수를 사용하는 방법 SELECT TO_CHAR(1234567890, 'FM999,999,999,999') AS val FROM dual 수치 값에 천 단위 콤마를 추가하기 위해서는 TO_CHAR 함수를 많이 사용한다. TO_CHAR 함수를 사용할 때는 두 번째 인자에 수치 값의 길이에 맞게 패턴 값을 부여해야 한..
오라클에서 중복 데이터를 추출하거나 찾기 위해서는 GROUP BY 절과 집계 함수를 사용하거나, OVER 절과 분석함수를 사용하는 방법이 있다. GROUP BY 절을 사용할 경우 중복 칼럼에 대한 건수만 조회 가능하고, OVER 절을 사용하면 중복 칼럼을 포함하여 전체 칼럼을 조회할 수 있다. 목차 집계함수를 사용하는 방법 (GROUP BY 절) 분석함수를 사용하는 방법 (OVER 절) 아래의 예제는 job, deptno가 중복(2건 이상)되는 데이터를 찾는 예제이다. 집계함수를 사용하는 방법 (GROUP BY 절) SELECT job , deptno , COUNT(*) AS cnt FROM emp GROUP BY job, deptno HAVING COUNT(*) > 1 GROUP BY 절과 집계함수를 ..
오라클에서 소수점 값을 올리거나 내려서 정수를 변환하기 위해서는 CEIL, FLOOR 함수를 사용한다. CEIL 함수는 지정한 값에 소수점이 있는 경우 무조건 올려서 다음 정수 값을 반환한다. FLOOR 함수는 지정한 값에 소수점이 있는 경우 소수점 값을 내려서 정수 값을 반환한다. 소수점 값을 반올림하거나 버림을 하기 위해서는 ROUND, TRUNC 함수를 사용하면 된다. 목차 소수점 올림 (CEIL 함수) 소수점 내림 (FLOOR 함수) 소수점 반올림, 버림 (ROUND, TRUNC) 소수점 올림 (CEIL 함수) SELECT CEIL(0.5) , CEIL(1.2) , CEIL(1.5) , CEIL(1.8) , CEIL(2.5) FROM dual CEIL 함수는 소수점 값이 있는 경우 무조건 올려서 ..
오라클에서 n번째 행의 값을 가져오기 위해서는 NTH_VALUE 함수를 사용하면 된다. NTH_VALUE 함수는 오라클 11g R2부터 사용할 수 있는 분석함수이다. 이전 오라클 버전에서는 FIRST_VALUE, LAST_VALUE, LAG, LEAD, WINDOWING절 등을 활용하여 특정 행의 값을 가져올 수 있다. NTH_VALUE(칼럼, 위치) 조회된 전체 행에서 특정 행의 값 가져오기 SELECT empno , ename , job , sal , NTH_VALUE(sal, 3) OVER(ORDER BY sal DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS sal_nv FROM emp WHERE job IN ('MANAGER'..
오라클에서 특정 값인 경우 NULL로 치환하기 위해서는 NULLIF 함수를 사용하면 된다. NVL 함수와 조금 반대되는 함수라고 생각하면 된다. NVL 함수는 NULL인 경우 특정 값으로 치환을 하고, NULLIF 함수는 특정 값인 경우 NULL로 치환을 한다. NULLIF 함수는 두 개의 칼럼 값이 동일한지 판단할 때도 사용할 수 있다. 칼럼의 값을 특정 문자열과 비교 WITH mydb AS ( SELECT 1 AS item_id, 'ORACLE' AS item_desc FROM dual UNION ALL SELECT 2 AS item_id, 'SQL' AS item_desc FROM dual ) SELECT item_id , item_desc , NULLIF(item_desc, 'ORACLE') AS..
오라클에서 NULL 값을 치환할 때는 NVL, NVL2, COALESCE 함수를 사용한다. COALESCE 함수는 NVL 함수의 기능이 조금 더 확장된 함수라고 생각하면 된다. NVL 함수와 동일하게 사용할 수도 있지만, 여러 개의 칼럼의 NULL 값을 판별해야 할 경우 NULL이 아닌 첫 번째 칼럼의 값을 반환할 때 유용하게 사용할 수 있다. COALESCE(exp1, exp2, exp3, exp4 ...) 와 같이 함수의 인자의 개수는 동적으로 입력할 수 있다. 기본 사용법 WITH customers AS ( SELECT 1 AS c_id, 'Tammy Bryant' AS c_name, '010-1234-5678' AS tel_no1, '02-345-6789' AS tel_no2, NULL AS te..
오라클에서 조회된 데이터에서 특정 칼럼을 기준으로 하나의 행만 조회해야 하는 경우가 있다. 중복된 칼럼의 데이터에서 그룹별로 최신의 행 하나만 가져오거나, 특정 칼럼으로 정렬하여 최상위 하나의 행만 조회할 때 아래의 2가지 방법을 사용할 수 있다. 아래의 방법은 행 전체를 중복 체크를 하여 제거하는 방법(DISTINCT)이 아니고 특정 칼럼을 기준으로 중복을 제거하는 방법이다. 그룹별로 순번을 지정하여 하나의 행만 추출SELECT empno , ename , job , hiredate FROM ( SELECT empno , ename , job , hiredate , ROW_..
오라클에서 상위 3개, 5개, 10개, 100개 등 n개의 데이터를 뽑기 위해서는 서브 쿼리를 활용하면 쉽게 해결할 수 있다. 서브 쿼리(Inline View)를 사용하여 데이터를 먼저 정렬한 후, 원하는 개수만큼 데이터를 추출하면 된다. 대부분 ROWNUM 키워드를 사용하며, 특수한 경우에 순위 함수(DENSE_RANK)를 사용하여 순위를 부여한 후 순위로 데이터를 추출하기도 한다. 상위 n개의 행(ROW) 추출 방법 SELECT empno , ename , sal FROM ( SELECT empno , ename , sal FROM emp ORDER BY sal DESC ) WHERE ROWNUM
오라클에서 누적 합계를 구하기 위해서는 SUM 함수와 OVER 절을 사용하면 된다. OVER 절을 사용하면 GROUP BY 절을 사용하지 않고도 SELECT 절에서 단독으로 합계를 구할 수 있다. OVER 절 내부의 ORDER BY 절의 칼럼 순서로 누적 합계가 표시되며, 조회된 결과도 해당 칼럼으로 정렬된다. ORDER BY 절에 선언된 칼럼의 값에 따라서 누적 합계 표시 형식이 달라질 수 있으므로 주의해야 한다. 누적 합계 구하기 SELECT empno , ename , job , sal , SUM(sal) OVER(ORDER BY empno) AS sal_sum FROM emp WHERE job IN ('MANAGER', 'SALESMAN') SUM 함수와 OVER 절을 사용하여 순차적으로 누적 합..
오라클에서 KEEP 키워드를 사용하면 행 그룹(GROUP BY) 내에서 최고 또는 최고 순위 행으로 집계를 할 수 있다. 그룹별로 MAX 또는 MIN 수치 값은 쉽게 표시할 수 있지만, MAX에 해당하는 행의 값 중에서 특정 텍스트 값을 같이 표시하기 위해서는 서브 쿼리를 사용하는 방법이 많이 사용된다. 그러나 KEEP 키워드를 사용하면 한 번의 쿼리문으로 최저 또는 최고에 해당하는 행의 값들을 쉽게 가져올 수 있다. KEEP 키워드는 GROUP BY 절 또는 OVER 절과 함께 사용해야 한다. KEEP을 처음 사용한다면 순위 함수(DENSE_RANK)를 알고 있으면 조금 더 쉽게 이해할 수 있다. [Oracle] RANK, DENSE_RANK 순위 함수 사용법 오라클에서 성적, 급여, 매출 등 순위를 ..