Computer/Database 6

[EXCEL] 데이터를 연결해주는 VLOOKUP 함수 기초

데이터를 관리/운용하는 업무를 하면서 SQL을 메인 기술로 다루고 있다. SQL자체는 어렵지 않지만 역시 진입문턱이 있으며 사용할 수 있는 환경이 한정적이다. 그러나 회사원이라면 IT관리자 외에도 모든 사람이 데이터를 다룬다. 이를 다룰 때 가장 강력한 툴은 역시 EXCEL이다. 오히려 SQL을 짜는 것보다 EXCEL의 기능을 활용하는 것이 훨씬 효과적인 경우가 있다. 이전에 소개했던 글 중에서 ROLLUP/GROUPING의 경우 오히려 EXCEL의 피벗테이블을 사용하는 게 편할 수 있는 것처럼. 그런 생각을 한김에 업무중에 가장 많이 사용한 EXCEL 함수도 소개를 해보려고 한다. ​ 그 중 가장 많이 사용한 함수는 VLOOKUP 함수로 정해진 범위속에서 기준 데이터와 일치하는 값을 찾아 원하는 열을 ..

Computer/Database 2021.12.01

[SQL] RANK / DENSE_RANK /ROW_NUMBER (순위함수 그리고 최신데이터 출력 방법)

RANK(), DENSE_RANK(), ROW_NUMBER() 각각 순위/순서를 반환하는 함수이지만 결과는 조금씩 다르다. RANK는 동점자의 있는 경우 동일 순번을 리턴, 다음 순위는 다음 숫자를 하나를 건너뛴다. (1, 2, 2, 4, 4, 6, .. ) DENSE_RANK는 동점자의 경우에 동일한 순번을 리턴, 다음 순위는 다음 숫자부터 진행이 된다 (1, 2, 2, 3, 3, 4, .. ) ROW_NUMBER의 경우 동점자가 있는 경우에 정렬이 된 순서대로 순서를 반환한다. (1, 2, 3, 4, 5, 6, 7, ...) ​ 아래와 같은 데이터가 있다고 가정해보자. 고객 판매금액 1 24000 2 17000 3 17000 4 14000 5 13500 6 13500 7 13000 SELECT 고객,..

Computer/Database 2021.11.22

[SQL] SUBSTR / INSTR / CONCAT / TRIM / LPAD&RPAD / REPLACE (한 눈에 보는 문자열 함수 모음집)

언제든지 한 눈에 볼 수 있는 문자열을 다루는 SQL 기본 함수 모음집. 1. SUBSTR(컬럼, 시작위치, 문자수) : 컬럼에서 필요한만큼 문자수를 잘라서 가져옴 SELECT SUBSTR('쿼리로 문자열 다루기' , 5, 3) FROM DUAL > 문자열 SELECT SUBSTR('쿼리로 문자열 다루기' , 5) FROM DUAL > 문자열 다루기 SELECT SUBSTR('쿼리로 문자열 다루기' , -3, 2) FROM DUAL > 다루 정규표현식도 사용이 가능하다. SELECT REGEXP_SUBSTR('문자열', '찾을내용 정규식', 시작위치, 몇번째) FROM DUAL; 예를 들어 컬럼가장 처음부터 IP주소를 찾아서 가장 먼제나오는 내용을 리턴하는 경우 SELECT REGEXP_SUBSTR(CO..

Computer/Database 2021.11.20

[SQL] ROLLUP/GROUPING 깔끔한 소계/합계 보고서만들기

업무중에 재밌었던 쿼리를 하나 정리하려고 한다. 기초쿼리이긴 하지만 처음봤을 때는 뭔가 싶었던 쿼리문이다. 먼저 ROLLUP을 이해하는 것이 필요하다. ROLLUP은 함수에서 묶인 컬럼을 기준으로 소계/합계를 구할 수 있도록 도와준다.(컬럼순서중요) SELECT COL1, COL2, SUM(COL3) FROM TABLE GROUP BY ROLLUP(COL1,COL2) 위 쿼리는 아래와 같이 합계를 출력할 것이다. A-1 합계, A-2 합계, A 전체합계 B-1 합계, B-2 합계, B 전체합계 A,B 전체합계 COL1 COL2 SUM(COL3) A 1 500 A 2 600 A 1100 B 1 300 B 2 200 B 500 1600 ROLLUP함수는 GROUPING 함수와 함께 사용하여 깔끔하게 합계/소..

Computer/Database 2021.11.19

[SQL] 서브쿼리

서브쿼리란 하나의 SQL 문장 내부에 존재하는 또 다른 SELECT문장을 의미한다. 서브쿼리의 위치에 따라 명칭을 달리한다. SELECT COL1, COL2, (SELECT SCALA_COL FROM SUB_TABLE) //스칼라 서브 쿼리 FROM TABLE1 A, (SELECT INLINE_COL FROM TABLE2) B //인라인 뷰 WHERE A.COL1=B.INLINE_COL AND A.COL2 IN (SELECT SUB_COL FROM TABLE3) //서브쿼리 각 서브쿼리의 특징을 간략히 정리하면 아래와 같다. 스칼라서브쿼리 : SELECT절에서 사용, 단일 행 반환 인라인뷰 : FROM 절에서 사용, SQL문 실행시 생성 종료시 사라짐 ( VIEW와는 조금 다름 ), 여러 테이블에 존재하..

Computer/Database 2021.11.18

[SQL] MERGE문, INSERT와 UPDATE를 동시에 진행하기

업무상 배치파일을 작성하다보면 마주치는 다양한 쿼리문들 중 정말 유용하다고 생각하는 MERGE문을 정리한다. MERGE문은 조건에 맞추어 UPDATE 및 INSERT로 분기하여 데이터를 처리하는 구문으로, 프로그램상 굳이 데이터유무를 체크하지 않고 데이터를 UPDATE/INSERT할 수 있다. 학창시절에 데이터베이스 설계/작성까진 접해봤지만 운영을 해본 경험은 없기에 업무를 하며 처음 접해본 DML 문법이었다. MERGE INTO {OBJTBL} A USING ( SELECT COL1_PK, COL2_PK, COL3, COL4, COL5, FROM {WKTBL} WHERE COL1_PK=:P1 AND COL2_PK=:P2 ) B ON ( A1.COL1 = B.COL1_PK AND A1.COL2 = B.C..

Computer/Database 2021.11.10