분류 전체보기 15

오라클 DISTINCT(중복 제거)

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 오라클에서는 로우 중복을 제거하기 위하여 DISTINCT 함수를 사용한다.하지만, 개인적인 경험으로 실제 개발되는 결과 테이블에 DISTINCT 함수를 사용한다기 보다는 검증을 위한 단계에서여러 데이터들을 조합하는 과정 중에 사용하는 빈도수가 가장 많았다. 사용법은 간단하다.SELECT DISTINCT  중복 제거할 컬럼 FROM 테이블;SELECT DISTINCT *FROM TABLE;실제 로직을 반영하여 MART테이블을 생성하는 경우라면 사용하는 것을 추천하지 않는다. GROUP BY - COUNT를 통해 UNIQUE한 조건을 찾아내어 데이터 정합성을 보다 정확하게 맞추는 것이 좋다. 추가 문의사항 혹은 해당 과정을 더 쉽게 진행..

오라클 PIVOT 함수

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 프로젝트를 진행하다 보면 행과 열을 바꿔 표현해야 하는 경우들이 있다. 분명 데이터의 한계는 BI툴로 극복할 수 있다. 하지만 모든 경우가 그런 것은 아니다. BI툴로도 해결하지 못하는 부분들을 쿼리로 해결할 수 있는 경우도 있다. 오늘 포스팅 주제는 PIVOT 함수이지만, 이론보다 실무 중심으로 예시를 들어보려 한다. 1. 피벗할 쿼리문에서 미리 기준을 정하고 집계한다. 2. 피벗 쿼리문에서 기준을 FOR에 집계값을 PIVOT에 위치시킨다. 3. 피벗된 컬럼은 기준 + 집계컬럼으로 문자열이 합쳐지기 때문에 따로 별칭을 부여한다. 물론 해당 예시는 이해를 돕기 위한 아주 간단하고도 용도가 없는 데이터지만 해당 방식으로 PIVOT 함수..

오라클 RANK OVER()

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 사이트마다 어떤 데이터를 가공하느냐에 따라 다르겠지만, 검증용으로 순위를 매겨야 할 때도 있다.물론 BI툴을 활용해 해당 부분을 해결할 수도 있겠지만, 데이터로만 논의를 거쳐야 한다면 아래와 같은 예시로 들어볼 수 있다. "현재 인구가 가장 많은 도시에 번호를 매겨서 확인하고 싶어."SELECT CITY, SUM(PPTI) PPTI, CASE WHEN SUM(PPTI) IS NULL THEN 0 ELSE RANK() OVER (ORDER BY NVL(SUM(PPTI),0) DESC) END AS PPTI_RANKFROM COUNTRYGROUP BY CITY; 인구수 합계에 따른 내림차순으로 순위를 매긴다. 다만..

오라클 컬럼 순서 바꾸기

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.  오라클 컬럼 순서를 바꾸고 싶을 땐 테이블 재생성 없이 ALTER 문으로 해결할 수 있다. 위 그림처럼 SALARY 컬럼과 GRADE 컬럼의 순서를 바꾼다고 가정해보자.ALTER TABLE MASTER.EMP MODIFY SALARY INVISIBLE;ALTER TABLE MASTER.EMP MODIFY GRADE INVISIBLE;ALTER TABLE MASTER.EMP MODIFY EXEC_DT INVISIBLE;ALTER TABLE MASTER.EMP MODIFY UPD_DT INVISIBLE;ALTER TABLE MASTER.EMP MODIFY USRNM INVISIBLE; ALTER TABLE 테이블명 MODIFY 컬럼명 ..

오라클 DML(INSERT, DELETE, UPDATE)

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. DML : Data Manipulation Language(데이터 조작 언어) 1. INSERTINSERT INTO 스키마명.테이블명 (컬럼1, 컬럼2, 컬럼3..)SELECT 컬럼1, 컬럼2, 컬럼3..FROM 스키마명.테이블; 데이터를 적재할 테이블의 컬럼명을 나열하고 적재할 쿼리의 컬럼 개수를 INSERT할 컬럼 개수와 정확하게 일치시켜야 한다. INSERT INTO 스키마명.테이블명SELECT 컬럼1, 컬럼2, 컬럼3..FROM 스키마명.테이블명; 만약 INSERT할 테이블의 컬럼개수와 순서가 정확하게 일치한다면 INSERT 절에서 컬럼을 생략할 수 있다. INSERT INTO MASTER.EMP (COL1, COL2, COL..

오라클 CREATE TABLE [PARTITION BY]

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.실제 프로젝트를 개발하다보면, 모델링 혹은 요구사항 등 다양한 상황들에 의해 또는 DB 성능 이슈로 인해 테이블들을 다량 파티션 해야하는 경우가 있다. 가장 좋은 경우는 설계 단계부터 데이터 양이 많은 주제 영역을 예측하여 파티션을 할당하는 게 가장 좋겠지만, 늘 그런 꽃다운 상황은 일어나지 않는 것 같다. 아래 코드는 파티션 테이블 생성 방법이다.CREATE TABLE 스키마명.테이블명 ( 컬럼명 데이터타입(길이) , 컬럼1 VARCHAR2(100) , 컬럼2 VARCHAR2(100) , 컬럼3 VARCHAR2(100) , 컬럼4 VARCHAR2(100) , 컬럼5 NUMBER NOT NULL, ..

오라클 CREATE TABLE [AS SELECT]

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.CREATE TABLE 스키마명.테이블명 ( 컬럼명 데이터타입(길이) , 컬럼1 VARCHAR2(100) , 컬럼2 VARCHAR2(100) , 컬럼3 VARCHAR2(100) , 컬럼4 VARCHAR2(100) , 컬럼5 NUMBER NOT NULL, 컬럼6 DATE DEFAULT SYSDATE NOT NULL, CONSTRAINT PK명 PRIMARY KEY (PK컬럼1, PK컬럼2) ); COMMENT ON TABLE 스키마명.테이블명 IS '테이블_코멘트';COMMENT ON COLUMN 스키마명.테이블명.컬럼명 IS '컬럼_코멘트'; 위 코드블럭은 오라클에서 테이블을 ..

실무 ETL

데이터를 추출하고 변환하여 적재한다.ETL, 말 그대로 EXTRACT, TRANSFORM, LOAD의 약자이다. 해석하자면 "추출 후 변환하여 적재한다"이다.필자는 국내 솔루션 기업인 어느 한 기업의 ETL 툴과, APACHE NIFI, SSIS 등을 다루어 봤다.솔직히 말하자면, 어떤 ETL 툴을 써도 완벽하다는 말은 죽어도 입 밖으로 나오지 않는다.다만, 국내외 기업을 떠나서 일정한 비용을 지불하고 사용하는 것이 정신건강에 이롭다는 것만 깨닫게 되었다. 물론, DB 스펙이나 환경에 따라 속도 측면에서는 영향을 받겠지만, UI 혹은 기능적인 측면에서 확연히 차이가 난다. 쉽게 비교하자면 NIFI에서 만들어진 하나의 ETL 프로세스가 솔루션 기업에서 제공하는 ETL 툴에서는 단 3블록이면 끝난다. 하지만..

오라클 CASE WHEN 사용법

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다. 쿼리를 개발하면서 WHERE절로도 표현이 안되는 경우가 있었다.개발하면서 정형, 비정형 상관없이 WHERE절로는 한계가 있던 경우가 많아 난감했었는데, 아마 자바 개발자에겐 IF라는 함수의 논리가 쉬울 수 있으나 처음 쿼리를 접하는 이들에겐 다소 헷갈릴 수도 있는 개념이라고 생각이 든다. 이미 익숙해져버린 함수지만 분명 처음엔 생소해서 당황했던 기억이..[  CASE WHEN [조건] THEN [조건이 참일 때 결과] ELSE [조건이 거짓일 때 결과] END AS [별칭]  ]그럼 CASE WHEN 절에 대해 실무영역에선 어떻게 쓰이는 지 경험을 빗대어 설명하겠다.해당 데이터를 직급 기준으로 GROUP BY를 했다고 가정해보자. 그..

오라클 WHERE절의 다중연산

ORACLE 12g 기준 및 실무 영역으로 작성한 글임을 알려드립니다.    저번 포스팅에서는 SQL의 기초 중에서도 아주 기초들을 배웠습니다. 하지만 실무영역에서 배운 내용들을 사용하기엔 2%가 부족합니다.그래서 이번 포스팅에서는 그 2%를 채워볼 예정입니다. 다양한 조건으로 데이터 추출하기 저번 포스팅에서 우린 조건을 검색할 때 WHERE을 사용한다는 것을 배웠습니다. 하지만 모든 조건이 equal(=)은 아닙니다. 유사한 데이터를 찾아야 할 때나 사이의 있는 값들을 추출해야 할 경우들도 있습니다. 그럼 WHERE 절에서 쓸 수 있는 연산자들은 어떤 것들이 있을까요?비교연산자라는 단어를 쓸 수도 있지만 익숙하지 않은 단어는 이해를 돕지 않습니다. 그러므로 예시로 설명하며, 실무에서 가장 많이 쓰이는 ..