プロが教える店舗&オフィスのセキュリティ対策術

SQL文を教えてください。

グループ毎にレコード数をカウントして、レコード数が大きい順に並び替えたいです。

番号 枝番 金額
111 1 100
111 2 100
222 1 100
222 2 100
222 3 100
333 1 100
444 1 100
444 2 100

【答え】
番号 件数
222 3
111 2
444 2
333 1
のようにorder by で並べ替えたいです。
SQL一発でできませんか?
SQLに詳しい方、ご教授ください。

A 回答 (2件)

普通に、



select 番号,count(*) as 枝番 from テーブル group by 番号 order by 枝番 desc;

で問合せ可能だと思いますよ。(少なくとも、10r2では正しく表示されます)
    • good
    • 1

YOUサブクエリ使っちゃいなYO。



select * from (select 番号, Count(*) as 件数 from テーブル) 元テーブル order by 件数 desc

これだとサブクエリが使えないDBMSではうまくいかないのだが、現時点でサブクエリが使えないDBMSはオンメモリDBでない限りほとんどなく、Count(*)を直でorder byできるDBMSの数の方が少ないため、汎用性を考えると上記のSQLが一番バランスが良いと思う。ってOracleって書いてるね。Oracleは(Count (*)をorder byする事が)できるんだけど、やはり素直なSQLを書く方が良いと思いますです。

Oracleは
select 番号, Count(*) as 件数 from テーブル order by 件数 desc
のようにasでつけた別名をorder byできると思うんだけど、どうだろう。他のDBMSは最近触ってないのでよく覚えてない。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!