0

Oracle 11g:

結果を最大数でリストし、次にch_idでリストしたい。group byを使用してカウントを取得すると、詳細の粒度が失われます。使用できる分析関数はありますか?

 SALES
 ch_id desc customer
 =========================
 ANAR  Anari   BOB
 SWIS  Swiss   JOE
 SWIS  Swiss   AMY
 BRUN  Brunost SAM
 BRUN  Brunost ANN
 BRUN  Brunost ROB     


Desired Results
count ch_id customer
===========================================
3   BRUN   ANN
3   BRUN   ROB
3   BRUN   SAM
2   SWIS   AMY
2   SWIS   JOE
1   ANAR   BOB 
4

2 に答える 2

1

分析カウント(*)を使用します。

select * from
(
select count(*) over (partition by ch_id) cnt, 
       ch_id, customer
from sales
)
order by cnt desc
于 2012-05-10T16:26:13.533 に答える
1
select total, ch_id, customer
from sales s
inner join (select count(*) total, ch_id from sales group by ch_id) b
on b.ch_id = s.chi_id
order by total, ch_id

わかりました-パーティションを使用して同時に発生した他の投稿は、Oracleのより良いソリューションです。しかし、これはDBに関係なく機能します。

于 2012-05-10T16:27:31.037 に答える