본문 바로가기
반응형

분류 전체보기84

Top N 쿼리가 무엇인가요? Top N 쿼리가 무엇인가요? 1) ROWNUM(오라클) — “가상 번호(슈도 컬럼)”(1) 슈도 컬럼이란?테이블에 실제로 저장된 컬럼이 아니라, DB가 실행 과정에서 임시로 만들어 주는 값입니다.오라클 대표 슈도 컬럼: ROWNUM, ROWID, LEVEL, CURRVAL/NEXTVAL(시퀀스)(2) ROWNUM 특징결과가 만들어질 때 행에 1,2,3… 번호가 붙습니다.그래서 “상위 몇 행”을 자를 때 쓰기 좋습니다.(3) ROWNUM으로 Top N 하는 기본 패턴(중요)정렬이 먼저, ROWNUM은 그 다음이어야 합니다.그래서 보통 “정렬을 서브쿼리로 감싼 뒤” ROWNUM을 붙입니다.예: 급여(SAL) 높은 순으로 상위 5명SELECT ROWNUM, empno, ename, salFROM (SELE.. 2026. 2. 25.
윈도우함수가 무엇인가? 윈도우함수가 무엇인가? 윈도우 함수 한 줄 정의행을 줄이지 않고(=GROUP BY처럼 뭉개지 않고), 각 행 옆에 ‘분석용 값’을 붙이는 함수입니다.GROUP BY → 결과 행 수가 줄어듦(집계행만 남음)윈도우 함수 → 원래 행은 그대로 + 옆에 순위/평균/이전값/누적비율 같은 컬럼이 추가됨1) 윈도우 함수 기본 틀(OVER)윈도우 함수는 항상 OVER(...)가 붙습니다.윈도우함수() OVER(PARTITION BY ... -- 그룹 나누기(부서별, 학급별)ORDER BY ... -- 그룹 안에서 정렬(급여순, 날짜순)[WINDOW FRAME] -- “어디까지를 범위로 볼지” (핵심)) 핵심 개념 2개PARTITION BY: “부서별로 따로 계산”ORDER BY: “부서 안에서 급여순으로 순위/흐름 만.. 2026. 2. 25.
그룹함수 그룹함수 1) 왜 ROLLUP / CUBE가 필요하나?GROUP BY는 보통 “그룹별 합계”만 냅니다.예) 부서+직무별 급여 합계SELECT deptno, job, SUM(sal) total_salaryFROM empGROUP BY deptno, job; 그런데 실무/리포트에서는 보통 아래도 같이 필요합니다.부서별 소계(부서 합계)전체 합계(Grand Total)이걸 한 번에 만들어 주는 게 ROLLUP / CUBE / GROUPING SETS 입니다.2) ROLLUP: “계층적으로 소계 → 총계”개념ROLLUP(deptno, job)이면 집계가 이런 계층으로 나옵니다.(deptno, job) 상세 합계(deptno) 부서 소계(전체) 총계예시SELECT deptno, job, SUM(sal) total.. 2026. 2. 24.
집합연산자 집합연산자 1) 집합 연산자란?두 개 이상의 SELECT 결과를 하나의 결과로 결합할 때 씁니다.대표 연산자: UNION, UNION ALL, INTERSECT, MINUS(Oracle)사용 조건(중요)합치는 각 SELECT는 컬럼 개수가 같아야 합니다.각 컬럼의 데이터 타입이 호환되어야 합니다. (숫자↔숫자, 문자↔문자 등)보통 컬럼 이름은 첫 번째 SELECT의 이름이 결과에 사용됩니다.정렬(ORDER BY)은 맨 마지막에 한 번만 붙이는 게 원칙입니다.2) 종류별로 한 번에 이해하기UNION (합집합, 중복 제거)두 결과를 합치되 중복 행은 1개로 정리합니다.중복 제거 과정이 있어서 UNION ALL보다 느릴 수 있음.예시(부서번호 목록 합치기):SELECT DEPTNO FROM DEPTUNIONS.. 2026. 2. 24.
서브쿼리 서브쿼리A. 서브쿼리 요약 (핵심 개념 + 연관 서브쿼리)1) 서브쿼리(Subquery) 한 줄 정의쿼리 안에 들어가는 또 다른 쿼리입니다.“먼저 작은 쿼리로 기준/목록/값을 만들고 → 메인쿼리가 그걸 이용해 조회/수정”하는 구조입니다.2) 연관 서브쿼리(Correlated Subquery)란?이미지 핵심:메인쿼리의 ‘각 행(row)’마다 서브쿼리가 다시 실행됩니다.서브쿼리가 메인쿼리의 컬럼을 참조합니다. (예: E1.DEPTNO를 서브쿼리에서 사용)그래서 일반(비연관) 서브쿼리보다 느릴 수 있음(행마다 반복 실행되기 때문).3) 연관 서브쿼리 예시 1: “자기 부서 평균보다 급여가 높은 직원”의미:직원 한 명(E1)을 기준으로,“E1이 속한 부서의 평균 급여”를 다시 계산해서,E1의 급여가 그 평균보다.. 2026. 2. 24.
JOIN 이해하기 SELECT s.ID, s.NAME, d.DNAMEFROM STUDENT sINNER JOIN DEPARTMENT dON s.DEPTNO = d.DEPTNO; JOIN 이해하기 1) JOIN이란?서로 다른 테이블의 데이터를 **공통 기준 컬럼(키)**으로 연결해서 한 결과로 보는 것.보통 ON 조건으로 “어떤 컬럼이 같을 때 붙일지”를 정합니다.✅ 기본 형태SELECT ...FROM AJOIN BON A.key = B.key; 2) 식별자 관계 조인 vs 비식별자 조인① 식별자 관계 조인(정석)PK–FK로 연결되는 조인가장 흔하고 데이터 정합성이 좋음✅ 예시(직원-부서)EMP_NEW: DEPTNO(FK)DEPT_NEW: DEPTNO(PK)SELECT e.ENAME, d.DNAMEFROM EMP_NEW e.. 2026. 2. 23.
반응형