WHAT'S NEW?
Loading...

SQLでちゃんとしたランキングを作る【2/3】

実に7ヶ月ぶりにこのシリーズを再開することにした。
前回なにをやったのか、というと、率直にリンク先を見ていただければ良いと思う。
SQLでちゃんとしたランキングを作る【1/3】

つまりseletしてorderしてlimitするだけでは正しいランキングがでない、ということだ。

幸いにも識者の方から色々アドバイスをもらい、俺なりに試してみた結果を書いてみようと思う。

まず、識者、つまりDupont氏から引用してもらったSQLがこれだ。
  1. select (select count(distinct b.sal) from emp b where b.sal <= a.sal) as rnk, a.sal from emp a  
個人的にSQLは改行を入れて見やすくする主義なので、以下のように適宜変更してみる。
  1. select  
  2.   (  
  3.     select  
  4.       count(distinct b.sal)  
  5.     from  
  6.       emp b  
  7.     where  
  8.       b.sal <= a.sal  
  9.   ) as rnk, a.sal  
  10. from  
  11.   emp a  
コードというものは、改行やインデントで適切にフォーマットしておくべきだと思っている。

しかしSQLに関してはまだ拘りはないので、だいたいいつもフォーマットは違う。統一しておいたほうが良い場合と、統一しないでも良い場合があるのだが、SQLは俺にとってまだ後者の方だ。