2022/08/08

リーディング

 騎手データ表示でリーディングってか順位表示しようかとSQL調べてました。RANK()使うんだとは直ぐに分かったけど、テーブル一覧表示なら素直にRANK()で行けるのは理解しましたが、今回は特定の騎手データ表示時にその騎手の順位を表示する方法に少し悩みました。

SELECT RANK() OVER(ORDER BY 一着回数 DESC, 二着回数 DESC) AS 順位 FROM 騎手マスタ
てな感じまでは調べると分かったが、実際に該当騎手のデータ表示時に順位を得るには
SELECT s.順位 FROM(順位のSQL) AS s WHERE s.騎手コード = @KCD
とする必要があり、
SELECT s.順位 FROM(SELECT 騎手コード, RANK() OVER(ORDER BY 一着回数 DESC, 二着回数 DESC) AS 順位 FROM 騎手マスタ) AS s WHERE s.騎手コード = @KCD
で何とか取得出来た。一着のみだと同位になる事がありそうなので二着まで考慮してみた。まあ、これが十分なのかはなんともだけど😉

追記2022.8.13
順位には結局一着二着だけではダメな感じなのは分かったので処理速度的にそれ程問題にならない感じだったので五着まで降順で、着外だけ昇順にして求める事にしました。着外だけは少ない方が上位かなっと😉

0 件のコメント:

コメントを投稿