두 개의 테이블이 있습니다. 하나는 cid, 이름, 상태 열이있는 고객 테이블입니다. 또 다른 테이블은 pid, cid, booktitle, price 열이있는 Purchase 테이블입니다.
고객:
CID NAME STATE
1 Peng NY
2 Li IL
3 Chan NY
매수:
PID CID BOOKTITLE PRICE
10 1 ABC 20
11 3 XYZ 15
12 1 MNOP 12
산출:
STATE CID NAME
NY 1 Peng
IL null null
각 주에서 가장 많이 구매 한 (최대 주문 수) 고객의 ID와 이름을 출력해야합니다. 각 고객에 대한 cid, 이름, 상태 및 구매 횟수를 출력 할 수 있지만 기능별 그룹을 사용하는 동안 더 많은 열을 사용할 수 없기 때문에 각 상태에 대해 얻을 수 없습니다.
select c.cid, c.name, c.state, d.orders
from customer c
left join (select cid, count(pid) as orders
from purchase
group by cid) d
on c.cid = d.cid;
누구든지 어떻게 진행해야하는지 제안 할 수 있습니까?
with cnt as (
select c.state, c.name, c.cid, count(p.cid) orders from customer c
left outer join purchase p on p.cid = c.cid
group by c.state, c.name, c.cid )
select state,
case when orders=0 then null else cid end cid,
case when orders=0 then null else name end name
from (select state, name, cid, orders,
row_number() over (partition by state order by orders desc) rn
from cnt)
order by name, state;
결과 :
STATE CID NAME
---------- ---------- ----------
NY 1 Peng
IL
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다