본문 바로가기

sqld

(30)
2-12) 윈도우 함수 윈도우 함수 (WINDOW FUNCTION)서로 다른 행의 비교나 연산을 위해 만든 함수본래 다른 행의 조회는 불가능GROUP BY를 쓰지 않고 그룹 연산 가능LAG, LEAD, SUM, AVG, MIN, MAX, COUNT, RANK ** 문법PARTITION BY 절출력할 총 데이터 수 변화 없이 그룹 연산 수행할 GROUP BY 컬럼GROUP BY는 출력할 총 데이터 수를 변화시키지만 WINDOW FUNCTION에서 PARTITION BY사용하면 그룹화된 데이터를 통한 연산을 총 데이터 수 변화 없이 출력 가능ORDER BY 절RANK의 경우 필수 (정렬 컬럼 및 정렬 순서에 따라 순위 변화)SUM, AVG, MIN, MAX, COUNT 등은 누적값 출력 시 사용ROWS | RANGE BETWEEN..
2-11) 그룹 함수 그룹 함수숫자 함수 중 여러 값을 전달하여 하나의 요약 값을 출력하는 다중행 함수수학/ 통계 함수들GROUP BY 절에 의해 그룹별 연산 결과를 리턴 함반드시 한 컬럼만 전달!NULL은 무시하고 연산 COUNT행의 수를 세는 함수대상 컬럼은 * 또는 단 하나의 컬럼만 전달 가능* 사용 시 모든 컬럼의 값이 NULL일 때만 COUNT 제외문자, 숫자, 날짜 컬럼 모두 전달 가능행의 수를 세는 경우 NOT NULL 컬럼을 찾아 세는 것이 좋음 (PK 컬럼) ** 문법  예) 각 컬럼의 COUNT 결과PK인 (NULL을 포함하지 않는) 컬럼과 NULL을 포함하는 컬럼의 출력 결과 다름 SUM총 합 출력숫자 컬럼만 전달 가능 AVG평균 출력숫자 컬럼만 전달 가능NULL을 제외한 대상의 평균을 리턴하므로 전체 대..
2-10) 집합 연산자 집합 연산자SELECT 문 결과를 하나의 집합으로 간주, 그 집합에 대한 합집합, 교집합, 차집합 연산SELECT 문과 SELECT 문 사이에 집합 연산자 정의두집합의 컬럼이 동일하게 구성되어야 함 (각 컬럼의 데이터 타입과 순서 일치 필요전체 집합의 데이터 타입과 컬럼명은 첫번째 집합에 의해 결정됨 합집합두 집합의 총 합 (전체) 출력UNION과 UNION ALL 1. UNION중복된 데이터는 한 번만 출력중복된 데이터를 제거하기 위해 내부적으로 정렬 수행중복된 데이터가 없는 경우는 UNION 대신 UNION ALL을 사용하여 성능 개선! 2. UNION ALL중복된 데이터도 전체 출력 예) 10번 부서 소속이 아닌 직원 정보와 20번 소속 직원 정보가 각각 분리되어 있다고 가정, 두 집합의 합집합 U..
2-9) 서브쿼리 서브쿼리하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문반드시 괄호로 묶어야 함예) SELECT 안에 SELECT 문 / INSERT, UPDATE, DELETE 안의 SELECT 문 서브쿼리 사용 가능한 곳SELECT 절FROM 절WHERE 절HAVING 절ORDER BY 절기타 DML (INSERT, DELETE, UPDATE) 절** GROUP BY 절은 사용 불가 서브 쿼리 종류 1. 동작하는 방식에 따라UN-CORRELATED (비연관) 서브쿼리서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태메인쿼리에 서브쿼리가 실행한 결과 값을 제공하기 위한 목적으로 사용CORRELATED (연관) 서브쿼리서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태의 서브 쿼리일반적으로 메인쿼리가 먼저 수행된 후에 서브..
2-8) 표준 조인 표준 조인ANSI 표준으로 작성되는 INNER JOIN, CROSS JOIN, NATURAL JOIN, OUTER JOIN을 말함 INNER JOIN내부 조인, 조인 조건이 일치하는 행만 추출 (ORACLE 조인 기본)ANSI 표준의 경우 FROM 절에 INNER JOIN 혹은 줄여서 JOIN 명시, 으로 연결만 XANSI 표준의 경우 USING이나 ON 조건절을 필수적으로 사용 ON 절조인할 양 컬럼의 컬럼명이 서로 다르더라도 사용 가능ON 조건의 괄호는 옵션 (생략 가능)컬럼명이 같을 경우 테이블 이름이나 ALIAS를 사용하여 명확하게 지정 (테이블 출처 명확히)ON 조건절에서 조인 조건 명시, WHERE 절에서는 일반 조건 명시 ** 문법  예) EMP 테이블과 DEPT 테이블을 사용하여 각 직원의..
2-7) 조인 JOIN (조인)여러 테이블의 데이터를 사용하여 동시 출력하거나 참조할 경우 사용FROM 절에 조인할 테이블 나열ORACLE 표준은 테이블 나열 순서 중요하지 X, ANSI 표준은 OUTER JOIN 시 순서 중요WHERE 절에서 조인 조건을 작성 (ORACLE 표준)동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름이나 테이블 ALIAS 붙임N개의 테이블 조인하려면 최소 N-1 개의 조인 조건이 필요적다면 카타시안 곱 발생 가능ORACLE 표준과 ANSI 표준이 서로 다름  조인 종류조건의 형태에 따라EQUI JOIN (등가 JOIN) : JOIN 조건이 동등 조건 (=)인 경우NON EQUI JOIN : JOIN 조건이 동등 조건이 아닌 경우조인 결과에 따라INNER JOIN : ..
2-6) ORDER BY 절 ORDER BY 절데이터는 입력된 순서대로 출력, 출력되는 행의 순서를 사용자가 변경하고자 할 때 ORDER BY 절 사용ORDER BY 뒤에 명시된 컬럼 순서대로 정렬 → 1차 정렬, 2차 정렬 전달 가능정렬 순서 : 오름차순 (ASC), 내림차순 (DESC)로 전달생략 시 오름차순 정렬유일하게 SELECT 절에 정의한 컬럼 ALIAS 사용 가능SELECT 절에 선언된 순서대로의 숫자 전달 가능컬럼명과 숫자 혼합 사용 가능 ** 문법  정렬 순서 (오름차순)한글 : 가, 나, 다, 라...영어 : A, B, C, D...숫자 : 1, 2, 3, 4...날짜 : 과거 날짜부터 최근 날짜 순서로 정렬 예1) 문자 정렬가장 왼쪽 문자부터, 같은 값이면 다음 문자의 값을 비교해서 정렬됨 예2) 숫자값을 문자값..
2-5) GROUP BY 절과 HAVING 절 GROUP BY 절각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식GROUP BY 절에 그룹을 지정할 컬럼을 전달 (여러 개 전달 가능)그룹 연산에서 제외할 대상이 있다면 미리 WHERE 절에서 해당 행을 제외하기!WHERE 절이 GROUP BY 절보다 먼저 수행되기 때문그룹에 대한 조건은 WHERE절에서 사용할 수 없음SELECT 절에 집계 함수를 사용하여 그룹 연산 결과 표현GROUP BY 절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없음예) 원래 테이블의 10개 행 → GROUP BY로 3개로 요약됨 → GROUP BY 결과에 따른 집계 함수 (SUM 등)과 원래 테이블의 컬럼을 함께 출력 불가개수가 다르기 때문 ** 문법  예1) 부서별 (DEPARTM..