[Oracle] 오라클 상위, 하위 n개 행만 추출하는 방법
·
DataBase/Oracle
오라클에서 상위, 하위 n개 행을 추출하는 방법은 서브쿼리(인라인 뷰)를 사용하면 됩니다.정렬 후 n번째 행까지만 추출순위 산정 후 n번째 순위까지만 추출상위 n개 행 추출 방법1 (ROWNUM)SELECT * FROM ( SELECT EMPNO , ENAME , JOB , SAL FROM EMP ORDER BY SAL DESC ) WHERE ROWNUM 내림차순으로 정렬(DESC) 후 ROWNUM 을 지정하면 상위 n번째 행만 추출이 가능합니다.반대로 오름차순으로 정렬(ASC) 후 ROWNUM 을 지정하면 하위 n번째 행만 추출이 가능합니다. 상위 n개 행 추출 방법2 (DENSE_RANK)SELECT EMPN..
[Oracle] 오라클 KEEP 사용 방법 (RANK, DENSE_RANK / MAX, MIN, SUM, COUNT)
·
DataBase/Oracle
오라클에서 KEEP 을 사용하면 그룹(GROUP) 내에서 최대, 최저 순위 행(값)을 가져올 수 있습니다.최대, 최저 순위의 값을 구하는 건 쉽지만, 해당 순위의 행의 다른 컬럼 값을 가져와야 하는 경우 KEEP 을 사용하면 서브쿼리를 사용하지 않아도 값을 가져올 수 있습니다. KEEP을 사용할 때는 GROUP BY 절로 그룹을 지정하거나 OVER 절로 구분해야 합니다.KEEP 기본 사용 방법 (GROUP BY) 그룹을 지정하는 경우 사용SELECT DEPTNO , MAX(SAL) KEEP(DENSE_RANK LAST ORDER BY DEPTNO) AS SAL_LAST , MAX(JOB) KEEP(DENSE_RANK LAST ORDER BY SAL) AS JOB_LAST , M..
[Oracle] 오라클 스케줄러 잡(Scheduler Job) 실행 결과 확인 방법 / 스케줄 동작 로그 및 에러 확인
·
DataBase/Oracle
오라클에서 스케줄러 잡(Scheduler Job)을 설정하면 실행 결과가 로그로 기록됩니다.스케줄러 잡으로 주기적으로 특정 작업을 실행한 결과를 확인하고 싶을 때 해당 쿼리로 로그를 확인하면 됩니다. 스케줄러 잡 실행 결과SELECT * FROM USER_SCHEDULER_JOB_LOG WHERE TO_CHAR(LOG_DATE,'YYYYMMDD') = TO_CHAR(SYSDATE,'YYYYMMDD') ORDER BY LOG_DATE DESC; 위 쿼리를 실행하면 스케줄러 잡의 성공, 실패 여부를 확인할 수 있습니다. 스케줄러 잡 실행 상세 결과 (에러 확인)SELECT * FROM USER_SCHEDULER_JOB_RUN_DETAILS WHERE TO_CHAR(LOG_DATE,..
[Oracle] 오라클 LISTAGG 사용 방법 및 예제 (정렬, 중복제거, 컬럼 합치기/이어 붙이기)
·
DataBase/Oracle
오라클에서 쿼리를 작성하다 보면 여러 행의 컬럼 값을 하나로 묶어서 표현해야 하는 경우 LISTAGG 함수를 사용합니다. - 합치기, 이어 붙이기 LISTAGG 함수는 여러 행의 값을 묶어서 표현하는 기능이므로 GROUP BY 또는 PARTITION BY 를 사용하여 그룹을 지정해야만 사용 가능합니다. LISTAGG의 기본 사용 방법은 다음과 같습니다.LISTAGG( [합치는 컬럼], [구분자] ) WITHIN GROUP(ORDER BY [정렬 기준 컬럼] ) LISTAGG 사용 예제1SELECT LISTAGG(ENAME, ',') WITHIN GROUP(ORDER BY ENAME) AS ENAME_LIST FROM EMP WHERE JOB IN ('MANAGER','CLERK') 위 예시처럼..
[Oracle] 오라클 사용자 계정별 권한 조회 방법 및 개념 (시스템, 객체, ROLE)
·
DataBase/Oracle
오라클을 사용하면서 현재 접속한 사용자 계정별로 권한을 조회하는 방법을 알려 드리겠습니다.USER에 부여된 시스템 권한 조회SELECT USERNAME --현재 접속된 사용자 , PRIVILEGE --부여받은 시스템 권한 , ADMIN_OPTION -- 부여 받은 시스템 권한을 다른 사용자에게 부여 가능여부 FROM USER_SYS_PRIVS;권한설명SELECT ANY TABLE모든 유저의 테이블 조회 권한 (상위 유저의 테이블 조회 시 필요)CREATE ANY TABLE모든 유저의 테이블 생성 권한 (권한 부여 시 제외 추천)CREATE USER유저 생성 권한 (권한 부여 시 제외 추천) CREATE SESSION접속 권한 (권한 부여 시 제외 추천)CREATE TABLE테이블 생성..
[Oracle] 오라클 프로시저, 함수, 패키지 내용으로 검색 방법 및 예제 (조건, 주석 키워드로 찾기)
·
DataBase/Oracle
직접 SQL을 개발한게 아니라면 뭐가 어떻게 동작하는건지 궁금할 때 패키지, 함수, 프로시저를 검색할 수 있는 방법을 알려드리겠습니다.SELECT T1.OBJECT_ID , T1.OBJECT_NAME , T1.OBJECT_TYPE , T2.TEXT FROM USER_OBJECTS T1 INNER JOIN USER_SOURCE T2 ON T1.OBJECT_NAME = T2.NAME WHERE T1.OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION','PACKAGE') AND T2.TEXT LIKE '%테이블명, 주석, 컬럼(조건)%' -- 찾으려는 프로시저 또는 함수 내 문구 입력 테이블, 컬럼명으로 조회 시 대/소 문자 구분을 안하려면 UPPER 함수를..