しぃぶろぐ。

仕事とか技術関係のこと。他色々

SQL1文でランキングを取得する

二週間以上経ちましたが、Vagrantさんはまだ本稼働しておりません。
使いたかったプロジェクトに(納期的問題で新しいのは)導入できなかったので見送りです。

というわけで、本業でも副業でも納期がだだかぶりですよ!
年度末になんでも詰め込む風習は本当にかんべんしていただきたいです…。

とりあえず連日深夜までの作業が一段落してほっと一安心したところで、確定申告が待っていました。
ラスボス感はんぱないです。
なんにせよ、今月末が山場っぽいです。頑張ります。

 

今日は、MysqlSQL1文でランキング(上位3位まで)を取得する方法です。

例)
ある営業部の四半期内の合計売上が多い人3名を表彰します。
合計売上が同一だった場合は、売上件数が多い方を優先します。

売上テーブルには、以下の内容があります。

  • 年度
  • 社員ID
  • 顧客ID
  • 売上金額

だいぶ適当ですが、以下のようになります。

MysqlでSQL1文でランキング上位を取得

 

大筋では、基本となるテーブル(base)とランキング用のテーブル(ranking)をくっつけて、
ランキング3位までに絞り込んでいるだけです。

ランキングをしているのは、@rankです。
order by された順番どおりに、上から1,2,3,と番号をふっています(@rank:=@rank+cnt)