0

甲骨文 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

好的 - 同时发生的另一篇文章,使用分区,是甲骨文更好的解决方案。但是无论数据库如何,这个都有效。

于 2012-05-10T16:27:31.037 回答