본문 바로가기

전체 글307

SQL 여러테이블 데이터 조인 Oracle NON EQUI JOIN - 조인하려는 테이블 사이의 연결 조건이 이퀄이 아닐 때 Between, and 연산자를 이용 - 오늘 사용해볼 테이블은 사원 테이블(emp), 급여테이블(salgrade) ▼ 두 가지 테이블을 조인해서 이름, 월급, 급여 등급을 출력 ▷salgrade 테이블을 보면 losal(low salary겠지)과 hisal 사이의 급여가 grade 1. 1등급을 가르키고 있음 그래서 non equi join의 between을 활용해 losal과 hisal 사이에 emp.sal 이 해당되는 등급을 출력하도록 함 ▶ where 조건 절에 조인 조건을 작성해서 두 테이블을 조인함. 이전에 한 NTILE 분석 함수를 보면 범위를 출력할 수 있었는데, 그거는 범위를 상세하게 지정할 수 없었음. 자세한 건 ▷ https:/.. 2023. 12. 28.
SQL 여러테이블 데이터 조인 - Oracle EQUI JOIN - 서로 다른 테이블에 있는 컬럼들의 데이터를 하나의 결과로 조인해서 출력 ▼ 사원(emp)테이블, 부서(dept)테이블을 조인하여 이름과 부서 위치를 출력 - 먼저 사원테이블을 살펴보면 - 부서테이블은 ▷ 사원(emp)테이블의 부서(deptno)과 : emp.deptno 부서(dept)테이블의 부서(deptno)가 일치시켜 : dept.deptno 직원(ename)이 어디서일하고있는지(loc)를 출력 - ename은 emp_TB에 있고 loc은 dept_TB에 있으므로 from 절에 둘 다 적고 - emp.deptno = dept.deptno 라는 조건을 주어 조인을 수행. ▷ ename의 deptno를 가져와서 dept의 deptno와 일치시켜 loc를 출력 ▶ ▶ ▶ 이것을 EQUI JOIN이라고 .. 2023. 12. 25.
SQL 출력되는 행 제한하기 ROWNUM, Simple TOP-n Queries - 출력되는 데이터에 번호를 부여 ▼ 사원번호, 이름, 직업, 월급을 상단 5개 행만 출력 * Pseudo column, '가짜 컬럼'. 전체 출력(*) 으로 검색해서 출력되지 않는 감춰진 컬럼 rownum 이 여기에 속함. WHERE 절을 사용해서 원하는 데이터 행만 불러올 때 사용할 수 있음. (상단 행만 살펴볼때 유용) *Simple TOP-n Queries* - 출력되는 데이터 건수를 제한 하는 방법 ▼ 월급이 높은 사원순으로 사원번호, 이름, 직업, 월급을 4개 행으로 제한해서 출력 ▷ 요것을 TOP-N Query 라고 함. : 정렬된 결과로부터 위 or 아래쪽의 N개의 행을 출력하는 쿼리 : 위에서 배운 ROWNUM은 서브 쿼리를 사용하기 때문에 복잡해질 수 있는데 이건 단순하게 출력 가능 ▼.. 2023. 12. 24.
ML XGBoost(eXtra Gradient Boost) w.위스콘신 유방암 데이터 - 트리 기반의 앙상블 학습 알고리즘 중 하나 - 분류에 있어서 일반적으로 뛰어난 예측 성능 나타냄 - GBM 기반. GBM 단점인 느린 수행 시간/과적합 규제(Regularization) 부재 등 문제 해결됨 ▷ 병렬 CPU 환경에서 병렬 학습 가능해 GBM보다 빠르게 학습 완료 가능 - 뛰어난 예측 성능 : 분류/회귀 영역에서 일반적으로 뛰어난 예측 성능 - GBM 대비 빠른 수행 시간 : 병렬 수행으로 GBM 비교적 빠름 - 과적합 규제 Regularization : 자체 과적합 규제 기능으로 좀 더 강한 내구성 가능 - 나무 가지치기 Tree pruning : 더 이상 긍정 이득이 없는 분할을 가지치기해서 분할 수를 줄일 수 있음 - 자체 내장된 교차 검증 : 반복 수행 시 교차 검증을 수행해 최.. 2023. 12. 21.
ML AdaBoost, GBM(Gradient Boosting Machine) - weak learner (약한 학습기) 여러개를 순차적으로 학습-예측 하면서 잘못 예측한 데이터에 가중치를 부여해 오류를 개선하며 학습하는 방식 - 주로 AdaBoost(Adaptive boosting), Gradient Boost가 있음. - 오류 데이터에 가중치를 부여하며 부스팅을 수행하는 대표적인 알고리즘 - D1, 피치 데이터 세트에서 - 분류기준(weak learner, 약한 학습기)으로 (파란색 부분) +와 - 를 분류했을 때, 잘못 분류된 오류 데이터(동그라미 쳐진 부분)이 발생된다. - 그래서 이 오류데이터에 가중치 값을 부여한다(그림상으로는 조금 더 커짐) 이러한 부분들을 N번 반복하고, ▶ 약한 학습기가 순차적으로 유 값에 대해 가중치를 부여한 예측 결정 기준을 모두 결합해서 예측을.. 2023. 12. 20.
SQL 데이터분석함수 GROUPING SETS, ROW_NUMBER - 집계할 컬럼을 직접 선택해서 추가 집계 ▼ 부서 번호, 직업, 부서 번호별 총 월급, 직업별 총 월급, 전체 총 월급 출력 ▶ GROUPING SETS 괄호 안에 집계하고 싶은 컬럼명 기술하면 기술한대로 결과 출력됨 ▷ () 는 전체 - 위 쿼리에서는 () 전체, (deptno)부서별, (job) 직업별 ▷ 여기는 deptno+job의 집계 , () 전체 - 간단하게 본다면 ROLLUP과 결과는 동일하게 나옴 - 출력되는 순서대로 순위를 부여 : pseudocolumn(Oracle 내 가상컬럼)의 ROWNUM(데이터에 조회순서대로번호 매기기)와 비슷 : RANK, DENSE_RANK와는 다름 관련 내용 ▶ https://dev-adela.tistory.com/284 ▼ 사원번호,이름,연봉,순위, 번호.. 2023. 12. 18.
SQL 데이터분석함수 SUM OVER, RATIO_TO_REPORT, ROLLUP, CUBE - 데이터 누적해서 출력 ▼ 직업이 ANALYST, MANAGER인 사원들의 사원번호, 이름, 월급, 월급 누적치 출력하는 쿼리 ▶ OVER ( ) - 값을 누적할 윈도우 지정 ▷ ORDER BY empno를 통해 사원번호를 오름차순 정렬. 정렬된 것을 기준으로 sal 누적 출력 윈도우 기준 윈도우 방식 설명 ROWS UNBOUNDED PRECEDING 맨 첫번째 행 가리킴 UNBOUNDED FOLLOWING 맨 마지막 행 가리킴 CURRENT ROW 현재 행 가리킴 ▷ Between unbounded preceding and current row는 맨 첫번째부터 현재까지의 값. ▶ 위 쿼리를 보면 - BLAKE 누적치 는 JONES + BLAKE CLARK 누적치 는 JONES + BLAKE + CLA.. 2023. 12. 15.
Algorithm - 개요2 - 문제를 해결하기 위한 절차나 방법 - 컴퓨터가 어떤 일을 수행하기 위한 단계적 방법 1. 슈도코드 - 일반적인 언어로 코드를 흉내 내서 알고리즘을 써 놓은 코드. - 특정 언어로 프로그램을 작성하기 전에 알고리즘을 대략적으로 모델링하는데 쓰임 2. 순서도(Flow chart) - 진행 흐름을 순서에 따라 기호나 문자로 나타낸 도표 - 흐름도. 데이터 처리 과정을 표현하는데 사용 - 프로그램을 작성하기 전 전체적인 흐름과 과정 파악을 위해 필수적으로 거쳐야 되는 작업 1. 정확성 : 얼마나 정확하게 동작하는가? 정확성이 높을 수록 좋음 2. 작업량 : 얼마나 적은 연산으로 원하는 결과를 얻어내는가? 적을수록 좋음. 3. 메모리 사용량: 얼마나 적은 메모리를 사용하는가? 적을수록 좋은 알고리즘. 4. 단.. 2023. 12. 14.
SQL Row를 column으로 출력 SUM+DECODE, PIVOT, UNPIVOT - 테이블의 ROW를 column으로 출력하려면 해당 함수를 사용해야함 ▼ 최종 결과 출력물 ▶ 일단 SUM을 제외하고 DECODE만 사용해서 부서 번호가 10이면 월급이 출력되게 해봄 쿼리를 살펴보면 ▷ deptno가 10인 사람의 sal을 "10"이라고 불리는 column에 DECODE를 사용해서 출력해라 (나머지는 NULL이다) ▼ 다음 쿼리는 직업, 직업별 토탈 월급을 출력하는데 합쳐서 하나로 출력해보기 ▷ 요거는 직업을 다 알고 있으니까 작성된 쿼리이지만 모르면 PL/SQL을 사용해야함. PL/SQL은 https://velog.io/@bahar-j/PLSQL 참고 ▼ 위에서 한 직업별로 토탈월급 출력하고나서 각 부서 번호별로 직업의 월급 분포를 보기 위해 추가해봄 ▷ 분포도를 보면 ANALYST.. 2023. 12. 12.