• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql 検索方法)

mysql検索方法:スマートに2011年の巨人二軍の勝敗と勝率を算出する方法

このQ&Aのポイント
  • mysqlの検索方法で悩んでいます。一番スマートな方法を教えていただけたらありがたいです。
  • 巨人一軍と巨人二軍の各試合結果を格納しているテーブルがあります。ここから、2011年の巨人二軍の勝敗を集計する。
  • このデータベースから2011年の巨人二軍の勝敗(○勝□敗)及び勝率(0.55等)をスマートに算出するには、どう行いますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

スマートかは分かりませんが、SQLで全部計算するなら下記のような感じではどうでしょうか。 select   チーム名,勝数,負数 /* ,引分数 */ ,勝数 / (勝数 + 負数 /* + 引分数 */) 勝率 from  (select    a.チーム名   ,count(case when b.自チーム得点 > b.相手チーム得点 then 1 else null end) 勝数   ,count(case when b.自チーム得点 < b.相手チーム得点 then 1 else null end) 負数   --,count(case when b.自チーム得点 = b.相手チーム得点 then 1 else null end) 引分数  from チームテーブル a   inner join 試合結果テーブル b   on a.id = b.自チームid   and b.試合年月日 like '2011%'  where a.id = '2'  group by a.チーム名); 引分は無いのであれば、その部分は無視してください。 試合年月日のデータ型が分からなかったので違うようであれば適当に修正してください。

crash___
質問者

お礼

回答ありがとうございます。だいぶやりたいことに近い結果が得られました。 ちなみに最後のセミコロンの前にas ○○をつけないとerror 1248がでるようです。

その他の回答 (1)

  • marutone
  • ベストアンサー率40% (70/174)
回答No.1

まずは以下のSQLを実行します。 SELECT '1' AS 管理ID, COUNT(*) AS 勝数 FROM 試合結果テーブル WHERE 試合結果テーブル.自チームid = '2' AND 試合結果テーブル.自チーム得点 > 試合結果テーブル.相手チーム得点 UNION SELECT '2' AS 管理ID, COUNT(*) AS 負数 FROM 試合結果テーブル WHERE 試合結果テーブル.自チームid = '2' AND 試合結果テーブル.自チーム得点 < 試合結果テーブル.相手チーム得点 そしてこのデータを取得した後にPHP側で、 $勝率 = 勝数 / (勝数 + 負数); とすれば良いと思います。

crash___
質問者

お礼

回答ありがとうございます。大変勉強になりました。

関連するQ&A