- 締切済み
順位の入力について
表題の件について質問させていただきます。 現在、下記のようなテーブルが存在しています。 順位 勝 負 勝率 rank win lose gb 3 1 0.750 2 1 0.667 1 1 0.500 このようなテーブルに対し、php側で順位を勝率順で入力しようとする際、 どのようなsqlを書けば宜しいでしょうか? なにとぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
今回のケースだと勝率をあらかじめ計算しておかなくてもいけます。 サンプルデータ CREATE TABLE 成績 (id INT NOT NULL AUTO_INCREMENT,rank INT,win INT,lose INT,PRIMARY KEY ( `id` ) ); INSERT INTO 成績 (id,win,lose) VALUES (NULL,3,1),(NULL,6,2),(NULL,2,1),(NULL,1,1),(NULL,2,3),(NULL,2,2),(NULL,4,2); この場合の順位づけ SELECT id,(SELECT count(*)+1 FROM 成績 WHERE 成績.win / (成績.win+成績.lose) >S.win / (S.win+S.lose)) AS RANK,win,lose ,win/(win+lose) AS gb FROM 成績 AS S ORDER BY gb DESC
- o123459876
- ベストアンサー率59% (19/32)
select (select count (distinct b.gb) from table b where a.gb <= b.gb) as rank ,win ,lose ,gb from table a
- yambejp
- ベストアンサー率51% (3827/7415)
同率の順位が発生した場合どうしたいかによって順位のつけ方は かわってきます。
補足
yambejp様 申し訳ございません。補足いたします。 同率の場合は順位を同じ順位にしたく思います。 よろしくお願いします。