본문 바로가기

오라클 함수6


오라클 - CONNECT BY LEVEL 이전 시간에 CONNECT BY PRIOR 에 대해서 공부를 했는데 내친 김에 이어서 CONNECT BY LEVEL 에 대해서도 공부를 해보자. CONNECT BY LEVEL 은 결론부터 말하자면 FOR 문을 사용한 것처럼 결과 값을 보여주는 게 가능하다. 이것도 무슨 말인가 하면 설명하면 힘드니 곧바로 쿼리를 돌려서 알아보자. SELECTLEVEL FROMDUAL CONNECT BY LEVEL 2018. 4. 14.
오라클 - 계층형 쿼리 START WITH... CONNECT BY PRIOR 오라클에서는 아주 강력한 계층형 쿼리를 지원한다. 제목에도 써놨지만 바로 START WITH... 어쩌고 저쩌고 CONNECT BY PRIOR 이다. 왜 오라클에서는 이라고 써놨냐면 다른 DBMS 에서는 지원하지 않는 듯 하기 때문이다. (잘못 알고 있는 걸수도 있는데 -_- 그렇다고 한다.) 하여튼 이 계층형 쿼리는 아주 편리한 쿼리인데 특히나 게시판 + 답글 같은 쿼리를 작성할 때 아주 유용하게 사용할 수 있다. 기본적인 사용법은 다음 쿼리를 보자. SELECTLEVEL, LPAD(EMPLOYEE_ID, LEVEL*3, '.') FROMEMPLOYEES START WITH EMPLOYEE_ID = 100 CONNECT BY PRIOR EMPLOYEE_ID = MANAGER_ID; START WITH .. 2018. 4. 14.
오라클 - 문자열을 자릿수만큼 채워주는 LPAD(), RPAD() 함수 DB 작업을 하다보면 가끔이지만 자릿수를 채워야 할 일이 생긴다. 예를 들자면 회원가입 시, 혹은 물품의 일련번호 기입시 순번이라거나 년도 + 시퀀스로 회원 번호를 만들거나 하는 경우인데 가끔 정말 무식한 방법으로 프로그램을 짠 곳을 보면 길이 체크를 해서 IF문으로 일일이 0, 00 등을 붙이는 곳이 있는데... 이건 정말 아니라고 본다. 하여튼 이럴 때는 오라클에서 제공하는 LPAD, RPAD 함수를 사용하면 되는데 이 함수들은 지정한 자릿수만큼 부족한 글자를 채워주는 기능을 한다. 사용법은 매우 간단하다.LPAD('컬럼 또는 문자열', 길이, '문자') RPAD('컬럼 또는 문자열', 길이, '문자') SELECT LPAD('1', 5, '0'), LPAD('11', 5, '0') FROM DUAL.. 2018. 4. 14.
오라클 RANK 심화 - RANK() WITHIN GROUP(), RANK() OVER(), ROW_NUMBER() OVER(), DENSE_RANK() ※ ORDER BY SALARY DESC 의 그룹에서 3,000 의 순위는? 기본 문법 : RANK(순위를 구할 컬럼 혹은 값) WITHIN GROUP(ORDER BY 기준이 될 컬럼 [정렬값]) 값 대신 컬럼명을 이용해 전체적인 순위를 구할 수도 있다. SELECT RANK(3000) WITHIN GROUP(ORDER BY SALARY DESC) as DESC_RANK FROM EMPLOYEES DESC_RANK : 82 SELECT RANK(3000) WITHIN GROUP(ORDER BY SALARY ASC) as ASC_RANK FROM EMPLOYEES ASC_RANK : 25 ※ 제일 많은 급여를 받는 사람부터 정렬하면서 RANK 매기기 기본 문법 : RANK() OVER(ORDER BY 기준.. 2018. 2. 18.
오라클 AVG 심화 - AVG() OVER() ※ 부서ID 를 기준으로 급여의 평균을 구해 같이 표시해준다. 기본 문법 : AVG(평균값을 구할 컬럼) OVER(PARTITION BY 기준이 될 컬럼) SELECT EMPLOYEE_ID, SALARY, DEPARTMENT_ID, AVG(SALARY) OVER(PARTITION BY DEPARTMENT_ID) AS DEPART_AVG_SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID IN (10,20,30); ※ 결과값 EMPLYEE_ID SALARY DEPARTMENT_ID DEPART_AVG_SALARY 200 4400 10 4400 201 13000 20 9500 202 6000 20 9500 114 11000 30 4150 115 3100 30 4150 116 2900 .. 2018. 2. 18.
많이 쓰이는 오라클 함수 ※ 반올림 함수 - round(value, n) . 을 기준으로 양수는 오른쪽, 음수는 왼쪽이다. 양수일 경우는 . 을 기준으로 오른쪽에서 n 만큼 이동한 후 해당 커서가 닿는 곳의 오른쪽의 수를 반올림한다.음수일 경우는 . 을 기준으로 오른쪽에서 n 만큼 이동한 후 해당 커서가 닿는 곳의 왼쪽의 수를 반올림한다. 예) round(13.281, 2) : 13.28예) round(13.286, 2) : 13.29예) round(13.281, -1) : 10 ※ 버림 함수 - trunc(value, n) . 을 기준으로 양수는 오른쪽, 음수는 왼쪽이다. 양수일 경우는 . 을 기준으로 오른쪽에서 n 만큼 이동한 후 해당 커서가 닿는 곳의 오른쪽의 수를 반올림한다.음수일 경우는 . 을 기준으로 오른쪽에서 n 만.. 2018. 2. 18.