SQLでちゃんとしたランキングを作る【2/3】
実に7ヶ月ぶりにこのシリーズを再開することにした。前回なにをやったのか、というと、率直にリンク先を見ていただければ良いと思う。
「SQLでちゃんとしたランキングを作る【1/3】」
つまりseletしてorderしてlimitするだけでは正しいランキングがでない、ということだ。
幸いにも識者の方から色々アドバイスをもらい、俺なりに試してみた結果を書いてみようと思う。
まず、識者、つまりDupont氏から引用してもらったSQLがこれだ。
- select (select count(distinct b.sal) from emp b where b.sal <= a.sal) as rnk, a.sal from emp a
- select
- (
- select
- count(distinct b.sal)
- from
- emp b
- where
- b.sal <= a.sal
- ) as rnk, a.sal
- from
- emp a
しかしSQLに関してはまだ拘りはないので、だいたいいつもフォーマットは違う。統一しておいたほうが良い場合と、統一しないでも良い場合があるのだが、SQLは俺にとってまだ後者の方だ。