본문 바로가기

SQL_SCRIPT6

Oracle, Tibero 다른 테이블의 데이터 비교 안녕하세요. 이번에는 데이터를 서로 비교하는 쿼리를 말씀 드리고자합니다. 엑셀에서는 흔히 =Exact(A1, B1) 이런식으로 데이터를 비교하게 되는데, DB 내에는 많은 컬럼과 로우가 존재하기 때문에 하나하나 비교하기가 어렵습니다. csv로 추출해서 엑셀에 비교하거나 또는 수동으로 눈대중을 보거나 비욘드 컴페어를 사용한다거나, 다양한 툴을 사용 할 수 있지만 쿼리 몇개로 바로 확인 하는 방법을 알려드리고자 합니다. 먼저 데이터의 교집합입니다. INTERSECT SELECT * FROM ORIGIN_TABLE INTERSECT SELECT * FROM COMPARE_TABLE ; 위와 같은 쿼리로 간단하게 교집합 데이터를 비교 할 수 있습니다. 대신 위 쿼리는 컬럼 구조가 모두 같다라는 가정이 붙습니다... 2023. 12. 16.
Oracle 또는 Tibero에서 숫자 나누기(제수) 안녕하세요. 이번에는 DB 스크립트에서 0을 나누는 스크립트에 관해 작성하려합니다. 본의 아니게 0을 나눌 계산식은 아니였지만, 데이터에 0값이 존재하게되어, 예기지 않은 오류를 접할수 있게되는데요. 이러한 오류는 함수, 프로시저 또는 SQL_Script 등 다양한 곳에서 마주치게 됩니다. 하지만 0을 회피하여 나누는 좋은 방법이 있습니다. SELECT NUL ( 분자 / DECODE ( 분모, 0, NULL , 분모), 0) FROM DUAL; 분자가 0일 경우 계산식에 문제되지 않지만 분모가 0일 경우 계산식의 오류가 발생됩니다. 위의 수식으로 완성 하면 됩니다. Divide by zero에 대한 오류를 피할 수 있습니다. 번외로 Oracle 에서는 NULLIF문을 제공합니다. 더욱 간단하게 0을 나.. 2023. 12. 16.
시퀀스 조회 및 생성하기. #1 안녕하세요. 이번에는 데이터베이스 시퀀스에 대해 간략하게 작성 하고자 합니다. DB sequence 는 말 그대로 순서를 의미합니다. ​ 예를 들면 도서관에 (가가0000 ~ 하하9999) 이런식으로 도서 번호가 매겨져 있는데요. 어떤 기준에 따라 작성된 번호를 매긴 것으로 보여집니다. (도서관 취향차이) 같은 책이더라도 번호는 각각 다릅니다. 이렇게 도서관 관리자(사서)는 중복되지 않는 유일한 도서 번호를 알고 있습니다. 새로운 책이 오면 도서관관리자(사서)가 도서 번호를 매기고 책에 표시를 합니다. 우리들이 보기엔 도서 번호가 안붙혀져 있는 책을 볼 수가 없죠? 마치 자동으로 생긴 것처럼 말이죠. ​ 새로운 책이 오면 도서 번호를 주기하는 역활이 시퀀스입니다. ​ ​ Oracle 과 PostgreSQ.. 2023. 7. 19.
DataBase Insert Select 문 쉽게 하기 안녕하세요. 이번에는 Insert 문에 관하여 작성하고자 합니다. 기본적인 Insert 문 먼저 간략하게 짚고 넘어가겠습니다. ​ 기본적인 INSERT INTO ~ INSERT INTO TN_NONI_HIST( NONI_ID, REG_DATE, ITEM_KOR, ITEM_ENG, ITEM_CODE, USE_AT) VALUES ( 'NONI_202207030', '2022-07-03', '노니_커피', 'NONI_Coffee', 2046152, 'Y'); NONI_ID, ITEM_KOR, ITEM_ENG, USE_AT 은 CHAR 타입으로 문자형으로 데이터를 넣는 구조입니다. REG_DATE 는 DATE 타입으로 날짜가 들어가고, ITEM_CODE 는 Integer 타입으로 숫자형이 들어갑니다. 다음으로는.. 2023. 7. 12.
Create Select Table 쉽게 생성하기 안녕하세요. 이번에는 Create Select 문에 대해 작성하고자 합니다. 이 Script 작성은 PostgreSQL 기준으로 작성하였습니다. Oracle 에서도 크게 다르지 않습니다. ​ CREATE TABLE CREATE TABLE build_noni_area( buld_id character varying(100), y_coord numeric(13,6), cont_sn character varying(10), prov_sn character varying(10), dist_sn character varying(10), crte_de date, CONSTRAINT build_noni_area_pkey PRIMARY KEY (buld_id), CONSTRAINT build_noni_buld_id_f.. 2023. 7. 7.
DB 중복값 찾기, 지우기 안녕하세요. 이번에는 중복된 값을 찾아보는 스크립트를 공유하려고 합니다. 기존부터 PK로 설정되어 있는 데이터라면 문제 없겠지만, 외부에서 가져온 데이터들을 적재하게되면 중복 데이터 유무를 판단해야하는데요. ​ 실무자답게 바로 본론으로 들어가겠습니다. ​ 중복되는 FID 조회하기 --중복되는 ID찾기 SELECT COUNT(1) AS ERR_CNT FROM noni.TN_noni_notice --검색하려는 테이블 WHERE FID = IN ( --검색하려는 컬럼 SELECT FID --검색하려는 컬럼 FROM noni.TN_noni_notice --검색하려는 테이블 GROUP BY FID HAVING COUNT (FID)>1 ); Query Cost를 감안한 스크립트입니다. 이 스크립트는 TN_NONI_.. 2023. 7. 3.