2017-02-11 181 views
0

我想统计有多少行使用相同的catid并按总数排序查询。按组计数(catid)无组

id | catid | name 
0 | 1  | foo 
1 | 1  | bar 
2 | 2  | paint 

我试过COUNT(catid)但这需要一个GROUP BY,我不想压缩的行。

我该怎么做?

回答

0

你想要窗口函数吗?

select t.*, count(*) over (partition by catid) as cat_cnt 
from t 
order by cat_cnt, catid; 

我应该注意的是,如果你不希望看到总,你可以把窗函数在order by

select * 
from t 
order by count(*) over (partition by catid), catid 
0

也许你可以运行GROUP BY作为一个单独的SELECT ,然后加入?

E.g.

select orig.*, summ.totals 
from t 
join (select count(cat_id) totals 
     from t 
     group by cat_id) summ 
on t.cat_id = summ.cat_id;