SQL 4 Oracle 오라클용 sql 실무

SQL4Oracle 64

like 와 substr()

2011-08-03 10:03:04 SQL 4 Oracle 오라클용 sql 실무 ▒ like 와 substr() 비교 ▒ like로 index 태우기 select 고객ID, 고객명, 취득일자, 점수 from 목적_Table where 고객상태='활동중' and 고객ID like '81%' ▒ like지만 full scan select 고객ID, 고객명, 취득일자, 점수 from 목적_Table where 고객상태='활동중' and 고객ID like '____07%' ▒ substr은 위 like와 같은 효과(대상필드를 편집하면 full scan 함) select 고객ID, 고객명, 취득일자, 점수 from 목적_Table where 고객상태='활동중' and substr(고객ID,5,2)='07'

SQL4Oracle 2023.03.10

Oracle 테이블 명세서 추출

2011-08-02 14:11:34 SQL 4 Oracle 오라클용 sql 실무 ▒ Oracle 테이블 정보 추출 ▒ 테이블 명세서 추출 SELECT a.TABLE_NAME, c.COMMENTS, a.COLUMN_NAME, b.COMMENTS, a.DATA_TYPE, a.DATA_LENGTH, a.NULLABLE FROM USER_TAB_COLUMNS a, USER_COL_COMMENTS b, USER_TAB_COMMENTS c where a.TABLE_NAME=b.TABLE_NAME and b.TABLE_NAME=c.TABLE_NAME and a.COLUMN_NAME=b.COLUMN_NAME order by a.TABLE_NAME,a.COLUMN_ID ▒특정 컬럼명이 있는건 추출 SELECT a.TAB..

SQL4Oracle 2023.03.10

인사 근속기간 추출

2011-08-02 14:10:41 SQL 4 Oracle 오라클용 sql 실무 ▒ 인사 근속기간 추출 최근 3년 퇴직자 중 총 근속기간이 1년 이상인 자 단, 중도에 입퇴사 반복된 자는 공백기간이 1개월 미만인 경우 계약기간이 연속된 것으로 계산하고, 공백기간이 1개월 이상인 경우 각각 1인으로 추출 ---------------------------------------------------------------- select * from ( select 이름, 주민번호, CMY 입사일, RTR 퇴사일, trunc(months_between( to_date( RTR,'yyyymmdd') , to_date(CMY,'yyyymmdd') ))+1 근속월 from ( select 주민번호,이름,min(입사일자..

SQL4Oracle 2023.03.10

그룹별 같은 금액 추출

2011-08-02 14:08:38 SQL 4 Oracle 오라클용 sql 실무 ▒ 그룹별 같은 금액 추출 하기 (그룹별 5억씩) SELECT B1.금액, B1.그룹필드명, B1.Key_필드명 FROM Table_NM B1, ( SELECT 그룹필드명, Key_필드명, CNT, sum_bal , random , ratio , ratio_sum from ( SELECT 그룹필드명, Key_필드명 , CNT , sum_bal , random , ratio , sum ( sum_bal ) over ( partition by 그룹필드명 order by 그룹필드명, random rows between unbounded preceding and current row) ratio_sum from ( SELECT B...

SQL4Oracle 2023.03.10

그룹별 같은 비율로 추출

2011-08-02 14:07:04 SQL 4 Oracle 오라클용 sql 실무 ▒ 그룹별 같은 비율로 금액 추출 하기 (그룹별 15.35%) SELECT b1.금액 , B1.그룹필드명 ,B1.Key_필드명 FROM Table_NM B1, ( SELECT 그룹필드명 , Key_필드명 , CNT , sum_bal , random , ratio , ratio_sum , round(ratio_sum*100, 2) ratio_rt from ( SELECT 그룹필드명 , Key_필드명 , CNT , sum_bal , random , ratio , sum ( ratio ) over ( partition by 그룹필드명 order by 그룹필드명, random rows between unbounded precedin..

SQL4Oracle 2023.03.10

dete type 연산

2011-08-02 14:05:29 SQL 4 Oracle 오라클용 sql 실무 ▒ 항상 헤깔리는 dete type 연산 d1 : to_date( '28-JUL-2011 23:10:43', 'DD-MON-YYYY HH24:MI:SS' ) d2 : to_date( '14-JUL-2001 09:00:00', 'DD-MON-YYYY HH24:MI:SS' ) 두놈의 경과 년수 years : trunc( months_between( d1, d2 ) / 12 ) 두놈의 경과 개월 months : mod( trunc( months_between( d1, d2 ) ), 12 ) 두놈의 경과 일수 days : trunc(d1 - add_months(d2,trunc( months_between( d1, d2 ) ))) 두..

SQL4Oracle 2023.03.10

기본 힌트

2011-08-02 14:04:57 SQL 4 Oracle 오라클용 sql 실무 ▒ 대용량 데이터 처리시 유용한 기본 힌트 /*+ index (데이블명 인덱스명) */ 기본 /*+ index_ss (데이블명 인덱스명) */ 오라클 9i에서 Index Skip Scan 기능을 사용할때 사용함 /*+ index_asc (데이블명 인덱스명) */ MIX 구할때 효과적 /*+ index_desc (데이블명 인덱스명) */ MAX 구할때 효과적 ▒ 인텍스 추출 select * from all_ind_cOlumns where table_name='목적_Table명' order by INDEX_NAME,COLUMN_POSITION

SQL4Oracle 2023.03.10

줄바꿈관련 특수문자 제거

2011-08-02 14:04:17 SQL 4 Oracle 오라클용 sql 실무 ▒ 데이터추출시 텍스트 필드에 줄바꿈관련 특수문자 제거 줄바꿈 관련 두개의 특수문자가 쌍으로 존재한다 문자코드 값 Chr(13) : carriage return 아래로 한줄 내리는 기능 Chr(10) : new line 동일한 줄의 첫번째 자리에 커서 보내는 기능 예) replace구문은 이용해서 먼저 cr을 없애고, 다음 nl을 없앤다 select replace( replace(REMARK,Chr(13),' '),Chr(10),' ') from table

SQL4Oracle 2023.03.10

COUNT 방법 (중복배제 집계, NULL 집계, 부분 집계)

2011-08-02 11:07:30 SQL 4 Oracle 오라클용 sql 실무 ▒ COUNT 방법 (중복배제 집계, NULL 집계, 부분 집계) select 고객구분, 취득지역, 취득종류, count(DISTINCT 고객ID) 고객수 ,count(*) 건수 , sum( case when 전화번호 is not null then 1 else 0 end) 전화있는건수, sum( case when 휴대폰번호 is not null then 1 else 0 end) 휴대폰있는건수, sum( case when 전화번호 is not null or 휴대폰번호 is not null then 1 else 0 end) 둘중하나이상_있는건수, sum( case when 전화번호 is not null and 휴대폰번호 is n..

SQL4Oracle 2023.03.10