QA@IT

SQLサーバでMAX値以外の値の取得

9607 PV

下記のようなテーブルから注文番号別に
注文回数の一番多いものを除いたデータを取得したいと思っております。

テーブル:注文情報
注文内容  注文番号 注文回数  注文日    SEQ
 果物   000001  0001   20140105   000
 野菜   000002  0001   20140106   001
 果物   000001  0002   20140107   002
 野菜   000002  0002   20140108   003
 野菜   000002  0003   20140109   004

取得結果
注文内容  注文番号 注文回数  注文日    SEQ
 果物   000001  0001   20140105   000
 野菜   000002  0001   20140106   001
 野菜   000002  0002   20140108   003

注文回数が最大の物を取得する方法はわかったのですが、
最大以外の物を取得することが出来ませんでした。

どのようにやるのが良いのか御教授頂けますよう宜しくお願いします。

  • 「SQLサーバ」というのは Microsoft の SQL Server ですか? であれば、そのバージョンは? -

回答

RANK,PARTITION BYを使って注文回数で順位付けをして2番目以降を取得するとよいかと思います。
以下SQLは動作確認はしておりませんので微調整して下さい。

Select 注文内容, 注文番号, 注文回数, 注文日, SEQ
From (
    Select 注文内容, 注文番号, 注文回数, 注文日, SEQ,
        RANK() OVER(PARTITION BY 注文内容 ORDER BY 注文回数 DESC) 注文回数順
    From 注文情報
) A
Where 注文回数順 > 1
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。