본문 바로가기

스터디/Oracle30

[Oracle/오라클] FIRST_VALUE() 필드의 첫번째 값, LAST_VALUE() 마지막 값 구하기 SELECT CLASS_CD, STUDENT_NO, STUDENT_NM, KOR FROM TB_GRADE; FIRST_VALUE(필드명) OVER (PARTITION BY 그룹명 ORDER BY 정렬필드명) 그룹중 최대값 구하기 SELECT CLASS_CD, STUDENT_NO, STUDENT_NM, KOR, FIRST_VALUE(KOR) OVER (PARTITION BY CLASS_CD ORDER BY KOR DESC) "CLASS_MAX" FROM TB_GRADE ORDER BY CLASS_CD, KOR DESC; MAX() 함수를 사용해도 동일한 결과 가능 SELECT CLASS_CD, STUDENT_NO, STUDENT_NM, KOR, MAX(KOR) OVER (PARTITION BY CLASS_.. 2021. 10. 19.
[오라클/Oracle] INSTER, SUBSTR, REPLACE SELECT DEPT_NM, SUBSTR(DEPT_NM, 0, INSTR(DEPT_NM, ' ')-1) DEPT_NM_KOR, REPLACE(SUBSTR(DEPT_NM, INSTR(DEPT_NM, ' ')+1), CHR(9), '') DEPT_NM_ENG FROM DEPT_TBL; SUBSTR(문자열, 시작위치[, 시작위치부터의 길이]) - [, 시작위치부터의 길이] 가 없으면 끝까지 - 시작위치가 음수일 경우 우측 기준 INSTR(문자열, 찾을 문자열[, 시작위치[, 몇 회차 발견 위치]]) - [, 몇 회차 발견 위치] 의 인덱스 값을 반환 - [, 시작위치]가 없으면 기본값 왼쪽에서부터 첫번째 발견 위치 =1과 같음 - [, 시작위치]를 -1로 하면 오른쪽에서부터 시작 REPLACE(문자열, 대상문.. 2021. 9. 18.
[Oracle/오라클] 다중 LIKE 조건 REGEXP_LIKE 일반적인 LIKE 조회 SELECT * FROM TB_GRADE WHERE STUDENT_NM LIKE '이%' OR STUDENT_NM LIKE '%길'; REGEXP_LIKE 는 ^, $ 등을 조합하여 사용할 수 있으며, 기본적으로 %문자% 형태 SELECT * FROM TB_GRADE WHERE REGEXP_LIKE(STUDENT_NM, '^이 | 길'); 2021. 7. 17.
[Oracle/오라클] LSITAGG SELECT SALES_DT , LISTAGG(PRODUCT_NM, ',') WITHIN GROUP (ORDER BY PRODUCT_NM) AS ITEMS FROM TB_SALES GROUP BY SALES_DT; LISTAGG에는 중복제거 DISTINCT 사용불가로, 중복값이 조회된다 SELECT DISTINCT SALES_DT , LISTAGG(PRODUCT_NM, ',') WITHIN GROUP (ORDER BY PRODUCT_NM) OVER(PARTITION BY SALES_DT) AS PRODUCT_NM FROM TB_SALES; SELECT LISTAGG(PRODUCT_NM, ',') WITHIN GROUP (ORDER BY PRODUCT_NM) AS ITEMS FROM (select DIST.. 2021. 7. 16.