깜놀하는 해므찌로

Oracle OVER() 함수 사용 예시 / OVER 함수 파라미터 개수 / Oracle length / Oracle RPAD() LPAD() 본문

IT

Oracle OVER() 함수 사용 예시 / OVER 함수 파라미터 개수 / Oracle length / Oracle RPAD() LPAD()

agnusdei1207 2022. 7. 12. 09:00
반응형
SMALL

사용법 : OVER( PARTION BY 컬럼 혹은 대상, ORDER BY 컬럼 혹은 대상, 분할 기준 )

파라미터 개수 : 0~3 개

순서 : FROM, WHERE, ORDER BY, HAVING 절 이후에 계산되므로 순서 유의

SELECT	SALARY
	 ,	(SELECT	SUM(SALARY)
     	   FROM	EMPLOYEE) AS total
  FROM	EMPLOYEE

1. 일반적인 서브쿼리를 활용한 모습

SELECT	SALARY
	 ,	SUM(SALARY)	OVER()	total
  FROM	EMPLOYEE

2. OVER() 함수를 적용한 모습

 

코드 길이가 확연히 줄어든 것을 볼 수 있다.

 

<select id="selectPK" parameterType="VO" resultType="VO">
    /* DB.selectPK */
    SELECT A.OWNER   
         , A.TABLE_NAME
         , B.COLUMN_NAME
         , A.CONSTRAINT_TYPE
         , B.POSITION
         , B.COLUMN_NAME || RPAD(' ', MAX(LENGTH(B.COLUMN_NAME)) OVER() - LENGTH(B.COLUMN_NAME), ' ') 
           || ' = #' || '{' || REPLACE(LOWER(SUBSTR(B.COLUMN_NAME, 1, 1)) || SUBSTR(INITCAP(B.COLUMN_NAME), 2), '_', '') || '}' whereScript
      FROM ALL_CONSTRAINTS A
     INNER JOIN ALL_CONS_COLUMNS B
        ON A.OWNER           = B.OWNER
       AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
     WHERE A.CONSTRAINT_TYPE = 'P'
       AND A.TABLE_NAME      = #{tblNm}
     ORDER BY B.POSITION
</select>

3. OVER() 사용 예시

4. LENGTH() 글자 수 및 길이 리턴

5. RPAD() 공백 채우기 

반응형
LIST