oracle 11

데이터개발(저반향병변) 이야기 (3)

지난 포스트에서 데이터개발 이야기에 앞서 레지스트리와 저반향병변의 개념을 소개했습니다. 레지스트리 개념 저반향 병변 (hypoechoic lesion) 개념 이번 데이터개발은 기존에 이미 개발이 상당 부분 진행되어 있었기에, 해당 부분을 파악하고 필요한 추가작업을 진행하는 업무입니다. 기존에 진행되어 있는 부분에 대해서는 sql 소스만 있을 뿐 더 이상의 산출물이 없는 관계로 sql 을 보고 일일이 살펴보아야 했습니다. 1. 분석 대상 샘플 (예시) 영상검사 결과 영상을 전문의가 판독하여 텍스트로 작성한 판독지가 파싱의 대상입니다. 예컨대, 아래와 같은 내용이 포함되어 있습니다. Hx. : high PSA (terminal dribbling - ) * prostate size : 21.7 g * tran..

프리랜서/CDW 2023.02.07

Oracle 공부 경험담

저는 오라클이 인정한 전문가였습니다. 뭔 소리냐고요? Oracle Certified Professional 을 해석하면 오라클이 인정한 전문가 맞지요? 그런데 OCP 8i 합격은 아주 오래전이고 자격이 언제인지도 모르게 만료되었기 때문에 "전문가였습니다"라는 과거형으로 이야기했습니다. 2003년도 10월 이였군요! 조그마한 회사 다니며 Visa3D 인증 기술지원하던 시절이었는데, 우연한 기회에 오라클 바우처를 얻었고 덤프를 달달 외워서 땄었지요. OCP8i 합격 후 1년이 되지 않은 어느날이었어요. 엘지카드에서 SM 파견 근무 중인 Java 개발자가 퇴사한다고 저보고 가서 대신 일할 수 있겠냐고 사장님께서 헬프 치시더라구요. 비트교육센터에서 Java 공부를 그렇게 해놓고 SI SM 을 한번도 해보지 못한..

SQL 2023.02.01

데이터개발(저반향병변) 이야기 (1)

전립선암 레지스트리 구축중인데요, 영상검사 관련 정보들 중에 "저반향병변" 영어로는 hypoechoic lesion 이라는 항목이 있습니다. 한글(저반향병변)이나 영어(hypoechoic lesion) 둘 다 어렵기는 마찬가지입니다. 그 전에 먼저 레지스트리가 뭔지부터 궁금하실 것 같아요. 1년전 이 곳에서 업무를 시작했을 때 레지스트라는 업무를 담당한다고 들었고 뭔소린가 했습니다. 설명을 들었지만 알쏭 달쏭했어요. 레지스트리? 영어사전에서 registry 를 찾아보면 등기소, 등록소라고 나옵니다. IT 를 오래한 저에게 가장 익숙한 개념은 윈도우즈 레지스트리입니다. regedit 해보면 나오잖아요 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\La..

프리랜서/CDW 2023.01.30

Oracle Timestamp Interval

1. DATE sysdate 은 DATE 형입니다. create table test_date as select sysdate as today from dual; test_date 의 레이아웃을 보면 today 칼럼이 DATE 형임을 확인할 수 있습니다. 2. TIMESTAMP TIMESTAMP 는 DATE 형의 확장형입니다. TIME ZONE 옵션에 따라 표현 방식이 미세하게 다른 몇 가지가 있습니다. 아래 스크립트를 통해 확인해볼 수 있습니다. CREATE TABLE temp_time_table (COL1 TIMESTAMP, COL2 TIMESTAMP WITH TIME ZONE, COL3 TIMESTAMP WITH LOCAL TIME ZONE); INSERT INTO temp_time_table VAL..

SQL 2022.10.07

key value 파싱 방법

다음과 같은 4가지의 케이스가 CLOB 형태로 관리되고 있습니다. item#1,item#2,...item#n 의 값을 뽑아내고 싶습니다. 케이스1 a)item#1; 10 b)item#2; 20 케이스2 a)item#1; 2 b)item#2; 3 케이스3 a)item#1; 5 & 4 b)item#2; 3 케이스4 a)item#1; 4 c)item#3; 3 1. 단순한 key value 파싱 REGEXP_SUBSTR(FT,'(item#1);(.*)',1,1,'i',1) 구문으로 쉽게 key값을 가져올 수 있습니다. 정규표현식 (item#1);(.*)의 두 번째 괄호가 value 이므로 REGEXP_SUBSTR(FT,'(item#1);(.*)',1,1,'i',2) 로 하면 value 를 추출합니다. SELEC..

SQL 2022.10.07

[데이터 개발] PSA nadir 구현 방법

PSA Nadir 개념 PSA nadir 는 전립선비대증이나 전립선암 치료(수술이나 RT)후에 측정한 PSA 수치중 최저값을 의미합니다. 개념은 단순한 것 같지만, SQL 개발을 위한 엄밀한 정의는 복잡해집니다. 최저값 산출의 대상이 되는 범위 결정이 필요합니다. 치료 이후부터 언제까지를 대상으로 할지가 문제입니다. 치료 이후 결과가 좋아서 0.3 최저 찍고 치료를 종료하였는데 몇 년이 지나 재발하여 다시 증가해서 치료받고 예전 최저치보다 더 낮은 수치인 0.1로 떨어졌다고 가정해보죠. 여기에서 구하고자 하는 최저치는 0.1 이 아닌 0.3 입니다. PSA 수치도 검사 장비의 성능에 따라 정밀도가 달라지므로, 어느 정도 수준으로 판단할지도 정리가 필요할 수 있습니다. 0.01 수준으로 측정되는 장비를 사..

프리랜서/CDW 2022.09.26

20년 간 몰랐던 LTRIM RTRIM 사용법

SQL 이 우리말보다 편한 멋쟁이천재사자입니다. 오늘 오픈채팅방에서 우연히 LTRIM 관련 질문을 보고 깜짝 놀랐습니다. 1. 간단하지만 깜짝 놀란 질문 데이터자격증 관련 오픈 채팅방에서 어떤 분의 질문을 보았습니다. 다음 SQL 의 결과는 ? select RTRIM(LTRIM('SQL DEVELOPER', 'S'), 'SQL') from dual 2. 왜 놀랐냐구요? 오래 전 OCP8i 취득한 이래 SQL과 함께한 세월이 20여년입니다. 그런데 질문에서 보이는 LTRIM RTRIM 사용 구문이 생소합니다. 두 번째 인수를 사용한 문장을 처음 봅니다. 언제부터 제공된 기능이었을까? 3. 관련 질문을 Googling 해보았습니다. 똑같은 질문이 네이버카페에도 올라와 있네요. https://cafe.nave..

SQL 2022.08.30

[TIP] 테이블 레이아웃 조회

/* 익숙하지 않은 테이블 레이아웃을 보기 편하게 표시해주는 쿼리입니다. */ SELECT A.OWNER, A.TABLE_NAME, A.COMMENTS TABLE_COMMENTS , B.COLUMN_ID, B.COLUMN_NAME, C.COMMENTS COLUMN_COMMENTS , B.DATA_TYPE||CASE WHEN B.DATA_TYPE = 'TIMESTAMP(6)' THEN '' ELSE '('||CASE WHEN B.DATA_TYPE IN ('NUMBER', 'FLOAT') AND B.DATA_PRECISION IS NOT NULL AND NVL(B.DATA_SCALE, 0) 0 THEN TO_CHAR(B.DATA_PRECISION)||','||TO_CHAR(B.DATA_SCALE) WHEN ..

SQL 2022.08.23

부서별 평균 월급보다 높은 월급의 사원 목록 구하기

질문 ※ emp 테이블 정보가 당장 없어 union all 을 이용해서 가상의 emp 테이블 생성했습니다. with emp as ( select 'Jane' ename, 1 as deptno, 100 as sal from dual union all select 'Shawn' ename, 1 as deptno, 200 as sal from dual union all select 'Ted' ename, 1 as deptno, 250 as sal from dual union all select 'steve' ename, 2 as deptno, 700 as sal from dual union all select 'John' ename, 2 as deptno, 600 as sal from dual ) select..

SQL 2022.07.19

Oracle 컬럼 자료형 NUMBER(3,2) 의미는?

1. 질문 오라클 데이터베이스에서 테이블 설계 시 컬럼의 자료형을 NUMBER(3,2)이라고 선언했을 시, 어떤 데이터가 올 수 있는 지 이게 무슨소리인지 이해가안가요 ㅠㅠ 2. 답변 NUMBER(3,2) 는 precision 3 scale 2 로서 소수점아래 2자리를 갖는 3자리 즉 0.00 패턴의 값을 의미합니다. 3. 테스트 select CAST(1.234 AS NUMBER(3,2)) AS tt from dual; -- 1.23 select CAST(1.235 AS NUMBER(3,2)) AS tt from dual;-- 1.24 select CAST(10 AS NUMBER(3,2)) AS tt from dual; -- ORA-01438: 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다. ..

SQL 2022.07.14