2017-02-11 10 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とGROUP BYを実行することができ

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

、その後、JOIN?

など。

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; 
関連する問題