복합 쿼리 예제 - 1
WHERE, GROUP BY, HAVING, ORDER BY가 모두 포함된 복합 쿼리를 하나 살펴본다. 이 예제에서는 회원들의 주문금액 데이터를 분석해서 특정 기간으로 필터링한 뒤 기간 내 2회 이상 주문한 회원들의 주문금액의 합계와 최고주문금액을 구하고자 한다.
사용할 테이블 생성 :
CREATE TABLE TBL (
주문번호 VARCHAR(5) PRIMARY KEY,
회원번호 VARCHAR(5) NOT NULL,
주문일시 VARCHAR(8) NOT NULL,
주문금액 NUMBER NOT NULL
);
예시 데이터 입력 :
INSERT INTO TBL VALUES(‘001’, ‘A001’, ‘20250802’, 1000);
.
.
.
데이터가 입력된 테이블 :
주문번호 | 회원번호 | 주문일시 | 주문금액 |
---|---|---|---|
001 | A001 | 20250802 | 1000 |
002 | A001 | 20250810 | 3000 |
003 | A002 | 20250803 | 2000 |
004 | A002 | 20250811 | 2000 |
005 | A002 | 20250815 | 2000 |
006 | A003 | 20250804 | 1000 |
007 | A003 | 20250814 | 4000 |
008 | A003 | 20250821 | 1000 |
009 | A003 | 20250824 | 1000 |
010 | A004 | 20250810 | 2000 |
쿼리 전문 :
SELECT 회원번호, MAX(주문금액) AS 최고주문금액, SUM(주문금액) AS 주문금액합계
FROM TBL
WHERE 주문일시 BETWEEN ‘20250801’ AND ‘20250815’
GROUP BY 회원번호
HAVING COUNT(*) >= 2
ORDER BY 주문금액합계 DESC;
실행 순서 :
① WHERE -> ② GROUP BY -> ③ HAVING -> ④ SELECT -> ⑤ ORDER BY
회원번호 | 최고주문금액 | 주문금액합계 |
---|---|---|
A002 | 2000 | 6000 |
A003 | 4000 | 5000 |
A001 | 3000 | 4000 |