COUNT로 행 갯수 구하기
DISTINCT로 중복 제거하기
SUM으로 합계 구하기
AVG로 평균내기
MIN, MAX로 최솟값, 최댓값 구하기
GROUP BY로 그룹화하기
HAVING 구로 '집계함수'의 조건걸기
서브쿼리
클라이언트 변수
스칼라 값
EXISTS (데이터 존재 유무 확인)
상관 서브쿼리
IN (집합간의 비교하기)
참고도서 Show 서브 쿼리란 쿼리안에 또 다른 쿼리가 있는 경우를 말한다. 즉, 외형적으로는 한 SELECT문 안에 다른 SELECT이 있는 경우이다. 내부에 있는 서브쿼리 즉 SELECT문은 WHERE절이나 SELECT 컬럼리스트 혹은 FROM절에도 넣을 수 있다. WHERE 절은 조건식으로 특정 레코드를 필터링할 때 사용하는데, 특정 조건이 다른 테이블의 값들을 참조하는 경우가 있다. 예를 들어 상품 프로모션 카테고리에 있는 제품 리스트를 뽑을 때 만약 프로모션이 의류와 신발인 경우 다음과 같이 SELECT문을 만들 수 있다. SELECT * FROM Products WHERE Category IN ('Clothing','Shoes') 그런데 프로모션 카테고리를 매주 변경한다면, Clothing과 Shoes를 하드 코딩할 수 없게 된다. 이런 경우는 프로모션 카테코리를 관리하는 테이블을 만들고, 테이블 데이타를 갱신함으로써 프로모션 변경을 반영할 수 있다. 이렇게 가변적은 조건 필터링을 구현할 때, IN 뒤에 서브쿼리를 지정할 수 있다. 아래 예제는 Promotion 테이블로부터 Active컬럼이 1인 레코드들의 category 컬럼 데이타를 가져오는 서브쿼리를 보여주고 있다. 서브 쿼리는 또한 SELECT문의 컬럼 리스트안의 계산 필드처럼 사용될 수 있다. 즉, SELECT문에서 컬럼명 대신 서브쿼리로 어떤 값을 생성, 리턴하는 경우이다. 예를 들어, 고객들의 고객당 주문수를 출력할 필요가 있을 경우, 아래와 같이 서브쿼리를 써서 COUNT를 계산할 수 있다.
SELECT의 FROM절에도 서브쿼리를 쓸 수 있는데, 이 서브쿼리 결과는 FROM절의 새 임시 테이블처럼 사용된다. 예를 들어, 다음 서브쿼리는 필터링한 Promotion 테이블에서 category와 type 컬럼만을 갖는 임시 테이블을 정의하고 있다. 이렇게 정의된 임시 테이블로부터 SELECT 리스트에서 보이듯이 임시테이블의 컬럼을 출력할 수도 있다. 본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다. |