DataBase 11

[Oracle] 경우의 수 구하기

아래와 같은 코드 목록을 가진 테이블에서 코드를 조합하여 만들어 낼 수 있는 모든 경우의 수에 대한 결과를 출력하는 쿼리 작성 CODE A B C 문제 설명 코드 3개로 구할 수 있는 모든 경우의 수는 코드 1개 일때 조합, 2개일때 조합, 3개일때 조합 모두 구하기 코드의 개수는 정해져 있지 않음(가변적으로 늘어날 수 있음) 이때 2가지 방식의 경우에 정답 작성 순서와 무관한 경우의 수 : A-B/ B-A 같은 경우의 수로 취급하여 A-B 한개만 출력 순서가 있는 경우의 수 : A-B/ B-A 다른 경우의 수로 취급, 각각 조회되도록 작성 CREATE TABLE TEST AS ( SELECT 'A' code FROM dual UNION ALL SELECT 'B' FROM dual UNION ALL SE..

[PostgreSQL]IP목록 정렬

문제> 다음과 같은 ip목록을 가진 [그림1]테이블에서 ip순서대로 정렬[그림2]하여 결과 출력 *Postgre SQL은 rownum 사용 불가하여 row_number 사용 1. rownum없어 row_number로 대체하여 num생성 row_number order by ip로만 생성시 10,100,10.1과 10.100.1.10의 순서가 뒤바뀜 SELECT ROW_NUMBER()OVER(ORDER BY CASE WHEN split_part(IP,'.',3)='10' THEN 1 ELSE 2 END , IP)NUM, IP FROM T 2. split_part로 '.'구분자로 나눈뒤 lpad로 3자씩 채워 정렬진행 SELECT NUM, IP FROM(SELECT ROW_NUMBER()OVER(ORDER B..

[PostgreSQL]연속된 날짜를 하나의 그룹으로 표현

문제 번호와 날짜를 가진 [그림1]테이블에서 번호별 연속된 날짜를 하나의 그룹으로 묶어 [그림2]와 같이 번호, 시작일, 종료일, 일수를 보여주는 쿼리 작성 테이블의 번호와 날짜는 중복되지 않는 유일한 값 SELECT NUM , MIN(DT) FROM_DT, MAX(DT)TO_DT, COUNT(DT) CNT FROM (SELECT NUM, DT , SUM(FLAG)OVER(PARTITION BY NUM ORDER BY DT) GRP FROM (SELECT NUM, DT , CASE WHEN TO_DATE(LAG(DT)OVER(PARTITION BY NUM ORDER BY DT),'YYYYMMDD')= TO_DATE(DT,'YYYYMMDD')-1 THEN 0 ELSE 1 END FLAG FROM T) A)..

[PostgreSQL]분석함수 사용하지 않고 rank 쿼리 사용

출처 : http://www.gurubee.net/lecture/2192 쿼리 작성조건 - 사원 점수에 대한 전체 순위와 부서별 순위를 구하세요. - 최종결과는 부서코드, 부서별 순위, 사원번호 순으로 정렬하세요. - 오라클 8.0 버전의 환경에서 사용될 SQL이므로 분석함수를 사용할 수 없습니다. CREATE TABLE t AS ( SELECT 1 AS empno, 10 AS deptno, 100AS point UNION ALL SELECT 2, 10, 90 UNION ALL SELECT 3, 10, 80 UNION ALL SELECT 4, 20, 100 UNION ALL SELECT 5, 20, 90 UNION ALL SELECT 6, 20, 80 UNION ALL SELECT 7, 30, 95 UN..

[Vertica]사원의 급여 합계 및 평균

출처 : http://www.gurubee.net/lecture/2191 [퀴즈] 사원의 급여 합계 및 평균을 보여주는 쿼리 퀴즈로 배워보는 SQL, 그 두 번째 시간은 그룹 바이(GROUP BY)와 롤업(ROLLUP)의 기본원리에 대한 이해와 이를 이용해 문제를 해결하는 방법에 대해.. www.gurubee.net 위의 그림과 같은 query 결과 도출 SELECT DEPTNO,EMPNO, CASE WHEN ENAME IS NULL AND GROUPING(X)=0 THEN '합계' WHEN ENAME IS NULL AND GROUPING(X)=1 THEN '평균' ELSE ENAME END ENAME, CASE WHEN ENAME IS NULL AND GROUPING(X)=1 THEN ROUND(AVG..

[PostgreSQL]스터디가입현황

다음과 같이 테이블이 3개가 있습니다. 1. 스터디 학생 테이블은 s_id가 PK입니다. 2. 스터디 과목 테이블은 c_id가 PK입니다. 3. 스터디마스터테이블은 학생과 과목 테이블을 각각 참조하며 PK는 s_id, c_id, chasu 3개 항목의 조합입니다. 쿼리 작성 조건입니다. - 학생별로 2개행씩(스터티과목수만큼) 조회되어야 합니다. - 스터디 차수별로 가입여부에 '○'표로 표시합니다. 3차까지 표시. - 과목별 참여건수를 표시합니다. - 서브쿼리 없이 작성하세요. WITH student AS ( SELECT '001'AS s_id, '기민용'AS s_nm UNION ALL SELECT '002', '이현석' UNION ALL SELECT '003', '김정식' UNION ALL SELECT ..

[Vertica]K-safety

K-safety는 DB 클러스터의 내결함성 측정 K는 클러스터에 존재하는 projection segmentation의 복사본 수를 표현 장애가 발생한 노드에 대해 다른 노드를 대신할 수 있게 하여 DB가 계속 실행되며 데이터 무결성을 보장 (Node개수/2)+1까지 살아있어야 복구 가능 인접한 Node 모두 죽으면 Vertica 재실행 필요 K=0 : Node 1개 or 2개, HA 구성 불가 K=1 : Node 3개 이상, HA 구성 가능 K=2 : Node 5개 이상, HA 구성 가능

DataBase/Vertica 2023.08.24

[Vertica]Projection Segmentation & Replication & Local Join

Segmentation(분산) Data를 클러스터 노드 전체에 고르게 분산 각 노드별로 데이터를 고르게 가지고 있어 쿼리 실행시 workload를 여러 노드로 분산가능 Replication(복제) 작은 테이블에서 주로 사용하며 Join시 유리 각 노드에 data를 저장하여 join이 local에서 일어나 조인 성능을 높일수 있음 한 node가 중단되도 다른 node에 동일 데이터 존재하여 서비스 지속 가능 Local Join 밑의 projection간의 join은 각 노드에서 로컬로 수행하여 노드의 데이터 반환

DataBase/Vertica 2023.08.24

[Vertica]Projection 특징

Projection이란? Vertica table은 논리적인 구조로만 존재하고 데이터를 저장하는 것은 Projection이라는 물리적인 구조로 저장된다. 실제 Table Data가 저장되는 Object(물리적 구조) Table당 복수개의 Projection 생성 가능 전체 컬럼을 가지는 Projection인 super projection은 반드시 한개 존재하며 마지막 super projection은 삭제 불가능 Table의 칼럼을 일부만 가지는 projection도 생성 가능 Projection특징 Table의 projection이 많아질수록 DML의 성능 저하 가능성 높음 모든 Node Data Update하여 적재 속도 영향, 디스크 공간 비효율적 사용 PK가 없으면 데이터 Type 작은 순으로 정렬..

DataBase/Vertica 2023.08.24