• 締切済み

順位の入力について

表題の件について質問させていただきます。 現在、下記のようなテーブルが存在しています。 順位 勝  負  勝率 rank win lose  gb      3   1   0.750      2   1   0.667      1   1   0.500 このようなテーブルに対し、php側で順位を勝率順で入力しようとする際、 どのようなsqlを書けば宜しいでしょうか? なにとぞよろしくお願いいたします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

今回のケースだと勝率をあらかじめ計算しておかなくてもいけます。 サンプルデータ 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

回答No.2

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)
回答No.1

同率の順位が発生した場合どうしたいかによって順位のつけ方は かわってきます。

gosanta21
質問者

補足

yambejp様 申し訳ございません。補足いたします。 同率の場合は順位を同じ順位にしたく思います。 よろしくお願いします。