본문 바로가기

Dev. Database/Oracle

(29)
LAG & LEAD 함수 - 이전, 이후 값 참조 -- 입사 형태 중 정직원으로 입사한 사원의 정보와 이전, 이후에 입사한 사원을 같이 표기해라 SELECT SABUN ,ENG_NAME ,JOIN_DAY ,JOIN_GBN_CODE ,LEAD(ENG_NAME,1) OVER(PARTITION BY JOIN_GBN_CODE ORDER BY SABUN) AS NEXT_MEM ,LAG(ENG_NAME,1) OVER(PARTITION BY JOIN_GBN_CODE ORDER BY SABUN) AS PREV_MEM FROM INSA WHERE JOIN_GBN_CODE = 'RGL' 이전 값, 이후 값을 조회하는 함수
REGEXP_LIKE( 다중 LIKE 검색 ) http://blog.naver.com/PostView.nhn?blogId=mk1126sj&logNo=220985887670&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=true&from=search
Oracle data dictionary를 이용한 테이블의 컬럼 정의 SQL SELECT a.column_name, c.comments AS column_name_ko, CASE WHEN data_type = 'VARCHAR2' THEN 'VC2' WHEN data_type = 'NUMBER' THEN 'NUM' ELSE data_type END || '(' || data_length || ')' AS TYPE, b.key, nullable, data_default AS defalut, c.comments FROM cols a LEFT OUTER JOIN ( SELECT table_name, COLUMN_NAME, 'PK' AS KEY FROM ALL_CONS_COLUMNS WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME FROM ALL_C..
pivot table - 행렬변환 SELECT COUNTRY , SUM(CASE WHEN activity='Adventure park' THEN num_of_places ELSE 0 END) as adventure_park , SUM(CASE WHEN activity='Golf' THEN num_of_places ELSE 0 END) as golf , SUM(CASE WHEN activity='River cruise' THEN num_of_places ELSE 0 END) as River_cruise , SUM(CASE WHEN activity='Kart racing' THEN num_of_places ELSE 0 END) as Kart_racing FROM ( WITH pivot_table AS ( SELECT 1 AS id, 'Fra..
증감률(성장률) 계산하기 - LAG OVER 참고 ) https://yahwang.github.io/posts/74 SELECT A.MONTH , A.TOTAL_SALES , CASE WHEN A.GROWTH_RATE 0 THEN ROUND(A.GROWTH_RATE, 2) || '%' ELSE '-' END AS GR_RATE FROM ( WITH MONTH_SUMMARY AS ( SELECT EXTRACT(MONTH FROM DT) AS MONTH, SUM(SALES) AS TOTAL_SALES FROM SAMPLE GROUP BY EXTRACT(MONTH FROM DT) ) SELECT MONTH, TOTAL_SALES, 100 * (TOTAL_SALES - LAG(TOTAL_SALES,1) OVER (ORDER BY MONTH)) / LAG(..
DB연동 실패 NullPointerException 오류 30여분을 해매고 나서 원인을 찾았다 문제의 NullPointerException 오류 문제의 근원지를 출력문으로 찾은 결과 코드 문제는 없었다 그런데 오라클 DB와 연동하고 연결을 해제시켜주는 52번 Connection 객체인 connect 인스턴스가 .close()를 실패하고 있음을 확인했다 출력문으로 어디까지 정상적으로 작동되는 것 인지 확인해보니 위 사진처럼 connect 인스턴스에서 문제가 되는 것을 확인했다 참조된 드라이브클래스 값을 connect 인스턴스로 받아오려고 했으나 문제가 있다는 것을 알게 되었다 예문을 연습한다고 이클립스의 JAVA PROJECT를 새로 만들어 코드를 작성한 것이 원인이었다 문제는 새로 만든 JAVA PROJECT에 oracle jar파일을 로드하지 않은 것이..
system 계정 비밀번호 분실과 계정 lock 해결법 오라클 system 비밀번호를 분실했을 때, 정말 식은땀 날 뻔 했다.일단 오라클이 설치된 서버의 admin 계정으로 들어가서, cmd 를 띄워두고 아래와 같이 입력한다 C:\>sqlplus "/as sysdba"SQL> show userUSER is "SYS" 이런식으로 보일 것이다.그럼 여기에서 계정 암호를 변경해주자. SQL> alter user system identified by 암호; 한가지 더, system 계정이 lock 걸렸을 때의 대처방법cmd에서 마찬가지로 아래의 명령어를 입력하자. SQL> alter user system(유저명이 될수도 있다) account unlock; 그럼 끝 출처: http://kimfish.co.kr/209 [김생선의 어장나라]C:\>sqlplus "/as ..
집계와 조건 분기 - 2. 집약결과로 조건 분기 2. 집약결과로 조건 분기 - UNIONSELECT EMP_NAME , MAX(TEAM) AS TEAM FROM Employees GROUP BY EMP_NAME HAVING COUNT(*) = 1 UNION SELECT EMP_NAME , '2개를 겸무' AS TEAM FROM Employees GROUP BY EMP_NAME HAVING COUNT(*) = 2 UNION SELECT EMP_NAME , '3개 이상을 겸무' AS TEAM FROM Employees GROUP BY EMP_NAME HAVING COUNT(*) >= 3 ; - CASE SELECT EMP_NAME, CASE WHEN COUNT(*) =1 THEN MAX(TEAM) WHEN COUNT(*) =2 THEN '2개를 겸무' W..