본문 바로가기
서브 쿼리 서브 쿼리란 하나의 쿼리문 안에 포함되어 있는 또 하나의 쿼리문을 뜻한다. 서브 쿼리는 여러 번의 쿼리를 수행해야만 얻을 수 있는 결과를 하나의 중첩된 SQL 문장으로 간편하게 결과를 얻을 수 있게 해준다. 서브 쿼리는 연산자의 오른쪽에 위치하여 사용하며, ANSI나 오라클 SQL 상에서 특별한 사용법의 차이는 없다. 서브 쿼리는 삽입되는 위치, 반환되는 결과에 따라 종류가 구분된다. 삽입되는 위치가 SELECT절인 경우 ‘SELECT 절 서브 쿼리’ 또는 ‘스칼라 서브 쿼리’ 라고 불리며, FROM절일 경우 ‘FROM 절 서브 쿼리’ 또는 ‘인라인뷰 서브 쿼리’ 라고 불린다. WHERE 절에 삽입될 경우에는 ‘WHERE 절 서브 쿼리’ 또는 ‘중첩 서브 쿼리’ 라고 한다. 그리고 반환되는 결과가 하나일..
조인 조인 (Join)은 조건에 따라 혹은 조건 없이 테이블을 좌, 우로 결합하여 결과 테이블을 출력하게 된다. 오라클에서는 표준 SQL에 해당하는 ANSI 조인 방식과 오라클 사에서 자체적으로 규정한 오라클 조인 방식 두 가지를 사용할 수 있다. 내부 조인 내부 조인 (Inner Join)은 두 개의 테이블을 조인 조건에 맞게 결합하여 새로운 결과 테이블을 생성한다. 조인 조건은 동등 조건 형식으로 두 테이블에 동시에 존재하는 값을 사용하거나, 비 동등 형식으로 범위를 지정하여 해당하는 값을 매칭시키기도 한다. 오라클 SQL의 내부 조인 문법은 다음과 같다. SELECT 테이블 {1, 2}.컬럼명 FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명 = 테이블2.컬럼명; FROM 절에 조인할 두 테이블을 ..
그룹 내 분석 함수 그룹 내 분석 함수는 지정된 조건의 특정 그룹 내에서 개별 행마다 결과값을 반환하는 함수를 의미한다. 그룹 내 분석 함수는 앞서 살펴본 집계 함수처럼 그룹 단위로 값을 계산하는 것은 동일하지만, 집계함수가 GROUP BY 절에 의해 그룹별로 하나의 결과를 산출하는 반면, 그룹 내 분석 함수는 그룹별이 아닌 그룹 내의 각 행마다 결과를 반환한다는 차이가 있다. 일반적으로 누적 계산, 집계 및 보고용 결과를 질의할 때 유용하게 사용된다. 그룹 내 분석 함수의 구문의 형태는 다음과 같다. WINDOW_FUNCTION(매개변수) OVER (PARTITION BY expr1, expr2, … ORDER BY expr3, expr4, … WINDOW 절) WINDOW_FUNCTION은 분석함수 중에서 WINDOW절..
GROUP BY 절과 HAVING 절 GROUP BY SELECT 절에서 다중 행 함수를 특정 컬럼에 적용하여 사용할 때는 GROUP BY 절을 사용해야 한다. 즉, GROUP BY 절은 기간별, 지역별, 지점별 등과 같이 컬럼 내의 특정 값을 기준으로 그룹을 묶을 때 사용한다. GROUP BY 절의 문법은 다음과 같다. SELECT 컬럼명(or 다중 행 함수), 컬럼명(or 다중 행 함수), … FROM 테이블명 WHERE 조건 GROUP BY 그룹대상 (컬럼명) ORDER BY 정렬대상 ; 주의할 점은 SELECT 절에서 나열된 컬럼이나 표현식은 GROUP BY 절에도 포함되어야 한다는 점이다. 위와 같은 SQL문이 실행되면 우선 FROM 절에 기술된 테이블로부터 WHERE 절에 지정된 검색 조건과 일치하는 행들이 추출되고, 추출된 데이..
집계 함수 집계 함수는 그룹화된 여러 개의 행 또는 테이블 전체 행에 대해 함수가 적용되어 하나의 결과를 반환한다. 즉, 하나의 그룹에 하나의 결과가 반환되는데, 특정 그룹으로 묶어 데이터를 집계할 때는 GROUP BY 절을 사용한다. GROUP BY 절을 사용하지 않은 경우에는 전체 데이터가 하나의 그룹으로 간주된다. 함수 기능 COUNT(컬럼명) 테이블의 행의 수를 반환한다. MAX(컬럼명) 컬럼의 최대값을 반환한다. MIN(컬럼명) 컬럼의 최소값을 반환한다. SUM(컬럼명) 컬럼의 합계를 반환한다. AVG(컬럼명) 컬럼의 평균을 반환한다. RANK(값) 그룹에서 값의 순위를 계산한다. DENSE_RANK(값) 테이블의 행의 수 계산 COUNT 함수는 지정한 조건을 만족하는 행의 개수를 반환하는 함수이다. CO..
조건 함수 오라클은 Java와 같은 프로그래밍 언어의 IF문처럼 조건에 따라서 SQL 문을 처리할 수 있는 조건함수인 DECODE 함수와 CASE 함수를 제공한다. DECODE DECODE 함수는 주어진 조건이 일치할 경우에 지정된 반환값을 리턴하는 조건함수로서 SQL 문을 보다 간략히 만드는 데 도움을 준다. DECODE 함수는 아래와 문법과 같이 특정 컬럼에 대해 조건값을 비교하여 동일하면 결과값을 반환하고, 비교값이 없을 경우 기본값을 반환한다. 기본값이 없는 경우에는 널을 반환한다. DECODE (컬럼, 값, 결과, [값, 결과, …] [기본 값]) DECODE 함수는 정확한 특정 조건에 대해서만 처리할 수 있기 때문에 범위 조건이나 부정 조건 등의 처리는 불가능하다. ex. 공급사 테이블의 사업자 번호를 ..