| https://cafe.naver.com/sqlpd | |
| 실기 2. index 생성 : 주문번호 + 주문일자 주문 + 주문상세 + 상품 으로 조인 하고, 주문일자로 order by 한 결과를 rownum <=10 로 처리 후, 고객과 left join 하였음 ( 고객과 주문은 optional 관계 였음 ) * 부분범위처리가 문제핵심으로 생각하였음. select nvl(b.고객명,'비회원) as 고객명 , a.주문일자 from ( select /*+ index(주문, 주문_idx) */ c.고객번호, c.주문일자 from 상품 a, 주문상세 b, 주문 c where a.상품유형 = 'V10' and a.상품코드 = b.상품코드 and b.주문번호 = c.주문번호 and c.주문일자 between '~~~' and '~~~' -- 조건 생각 안 남 order by c.주문일자 ) a, 고객 b where a.rownum <= 10 and a.고객번호 = b.고객번호(+) ; |
![]() |
[실기풀이 참고]
실기 1. 주문을 고객번호, 주문일자로 주문금액을 sum
이후 고객정보를 조인해서 고객명 추출
그리고 데이터복제로 월별, 일별을 나눠서 group by 로 처리하였음.
* function을 조인으로 바꾸는 것이 문제핵심으로 생각하였음
select decode(c.no, 1, '일별','월별) 주문유형 ,
decode(c.no, 1, b.주문일자, b.주문월) 주문구분,
b.고객등급,
sum(b.주문금액) 주문금액
from ( select substr(a.주문일시,1,8) 주문일자 ,
substr(a.주문일시,1,6) 주문월 ,
a.고객번호,
sum(a.주문금액) 주문금액
from 주문 a
where 주문일시 between '~~' and '~~' -- 조건 생각 안 남
group by substr(a.주문일시,1,8) 주문일자 ,
substr(a.주문일시,1,6) 주문월 ,
a.고객번호 ) a1 ,
고객 b ,
(select level as no from dual connect by level <=2 ) c
where a1.고객번호 = b.고객번호
group by decode(c.no, 1, '일별','월별) 주문유형 ,
decode(c.no, 1, b.주문일자, b.주문월) 주문구분,
b.고객등급 ;
실기 2. index 생성 : 주문번호 + 주문일자
주문 + 주문상세 + 상품 으로 조인 하고,
주문일자로 order by 한 결과를 rownum <=10 로 처리 후,
고객과 left join 하였음 ( 고객과 주문은 optional 관계 였음 )
* 부분범위처리가 문제핵심으로 생각하였음.
select nvl(b.고객명,'비회원) as 고객명 ,
a.주문일자
from ( select /*+ index(주문, 주문_idx) */ c.고객번호, c.주문일자
from 상품 a, 주문상세 b, 주문 c
where a.상품유형 = 'V10'
and a.상품코드 = b.상품코드
and b.주문번호 = c.주문번호
and c.주문일자 between '~~~' and '~~~' -- 조건 생각 안 남
order by c.주문일자 ) a, 고객 b
where a.rownum <= 10
and a.고객번호 = b.고객번호(+) ;
'02. SQLP 스터디 > 03. 기출' 카테고리의 다른 글
| SQLP 46 [2022.09.04] (3) | 2025.04.07 |
|---|---|
| SQLP 47 (0) | 2025.04.07 |
| SQLP 48-1 (0) | 2025.04.07 |
| SQLP 49-2 (0) | 2025.04.06 |
| SQLP 49-1 (0) | 2025.04.06 |
