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個人的にSQLは改行を入れて見やすくする主義なので、以下のように適宜変更してみる。
select ( select count(distinct b.sal) from emp b where b.sal <= a.sal ) as rnk, a.sal from emp aコードというものは、改行やインデントで適切にフォーマットしておくべきだと思っている。
しかしSQLに関してはまだ拘りはないので、だいたいいつもフォーマットは違う。統一しておいたほうが良い場合と、統一しないでも良い場合があるのだが、SQLは俺にとってまだ後者の方だ。