728x90 SQL5 [SQL] 5. 윈도우 함수(Window Functions) 1. 윈도우 함수 개념윈도우 함수는 결과 집합 내에서 ‘현재 행을 기준으로 주변 행’을 참조해 계산OVER( [PARTITION BY …] [ORDER BY …] ) 절 필수2. 기본 형태함수명(컬럼_or_식) OVER ( [PARTITION BY 분할컬럼…] [ORDER BY 정렬컬럼…])PARTITION BY: 그룹화 (GROUP BY와 유사하나, 결과행 수는 유지)ORDER BY: 윈도우 내 순서 지정윈도우 프레임 지정 없이 기본값은 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW3. 순위 함수3-1. ROW_NUMBER(): 순번 부여 (중복 없이 1,2,3…)SELECT department_id, employee_id, sal.. 2025. 5. 19. [SQL] 4. 뷰(View), 인덱스(Index), 시퀀스(Sequence) 1. 뷰(View)뷰는 하나 이상의 테이블을 조합하여 만든 가상의 테이블입니다. 복잡한 SELECT 문을 이름 붙여 재사용하거나, 특정 컬럼·행만 노출할 때 유용합니다.1-1. 뷰 생성CREATE OR REPLACE VIEW 직원_연봉_VIEW ASSELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT_IDFROM EMPLOYEESWHERE SALARY > 3000;1-2. 뷰 사용SELECT *FROM 직원_연봉_VIEWORDER BY SALARY DESC;1-3. 뷰 장단점장점복잡한 쿼리를 단순화권한 분리: 민감한 컬럼은 뷰에선 제외 가능단점업데이트 가능한 뷰인지 확인 필요너무 많은 뷰는 관리.. 2025. 5. 19. [SQL] 3.집합 연산(SET OPERATIONS) 1. UNION / UNION ALLUNION: 두 개 이상의 SELECT 결과를 합치되, 중복 행 제거UNION ALL: 합칠 때 중복을 그대로 포함 -- 부서 10 직원과 부서 20 직원을 합쳐서 조회 (중복 제거)SELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_IDFROM EMPLOYEESWHERE DEPARTMENT_ID = 10UNIONSELECT EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_IDFROM EMPLOYEESWHERE DEPARTMENT_ID = 20ORDER BY DEPARTMENT_ID;-- 중복 포함 버전SELECT … WHERE DEPARTMENT_ID = 10UNION ALLSELECT … WHERE DEPARTME.. 2025. 5. 19. [SQL] 2. 집계함수(COUNT,SUM,AVG,MIN,MAX), GROUP BY, HAVING 1. 집계 함수(Aggregate Functions)여러 행의 값을 한 줄로 요약할 때 사용합니다.함수설명예시COUNT(expr)행 개수COUNT(*)SUM(expr)합계SUM(SALARY)AVG(expr)평균AVG(SALARY)MIN(expr)최솟값MIN(HIREDATE)MAX(expr)최댓값MAX(SALARY)-- 직원 수 조회SELECT COUNT(*) AS 직원수 FROM EMPLOYEES; -- 전체 연봉 합계·평균·최댓값·최솟값 SELECT SUM(SALARY) AS 총연봉, AVG(SALARY) AS 평균연봉, MAX(SALARY) AS 최고연봉, MIN(SALARY) AS 최저연봉 FROM EMPLOYEES; 2. GROUP BY특정 컬럼별로 그룹을 나눈 뒤.. 2025. 5. 19. [SQL] 1. JOIN 1. 조인의 기본 개념여러 테이블에 흩어진 관련 데이터를 한 번에 조회할 때 사용합니다.SELECT … FROM 테이블A A [INNER | LEFT | RIGHT | FULL] JOIN 테이블B B ON A.공통컬럼 = B.공통컬럼;1-1. INNER JOIN두 테이블에서 매칭되는 행만 조회SELECT E.EMPLOYEE_ID, E.FIRST_NAME, D.DEPARTMENT_NAME FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;1-2. LEFT OUTER JOIN왼쪽 테이블의 모든 행 + 매칭되는 오른쪽 행오른쪽에 매칭이 없으면 NULLSELECT E.EMPLOYEE_ID, E.FIRST_NA.. 2025. 5. 19. 이전 1 다음 728x90