はじめに
ボートレースのデータベースを構築することができ、これで欲しいデータを取得できるようになりました。
試しに2コース進入で強い選手をピックアップしてみました。
全1500選手の2コース進入回数と2コース1着回数と2コース1着率をデータベースから抽出し、Excelに出力しました。
集計期間は2020年8月5日から2021年8月5日までです。
Excelファイルはこちらです。
ちなみに1位は進入回数が4回で信頼できないので、以下がトップ5の選手になります。
順位 | 選手名 | 進入回数 | 1着回数 | 1着率 |
1 | 渡邉 雄朗 | 32 | 16 | 0.5000 |
2 | 高田 ひかる | 34 | 15 | 0.4412 |
3 | 上村 純一 | 43 | 18 | 0.4186 |
4 | 山田 哲也 | 41 | 17 | 0.4146 |
5 | 前本 泰和 | 65 | 26 | 0.4000 |
一応プログラミング中心のブログなのでデータベースの構築までの簡単な手順とデータベースからデータを抽出した時に書いたクエリを紹介します。
データベース構築までの流れ
サーバーの準備
データベースを構築するためにはサーバーが必要です。
私はブログとデータベースの両方をしたいため、Xserverで有料のレンタルサーバーを契約していますが、データベースの利用だけならXFREEという無料のレンタルサーバーでもいけるかもしれません(確認はしてません)。
データベースの準備
データベースというデータベースを貯めておく場所の準備は簡単です。
サーバーパネルのMySQL設定というところで追加しただけです。
次にデータを入力するテーブル(表)を作りました。
これは同じくサーバーパネルにあるphpMyAdminというアプリを使ってテーブルの追加をしました。
作ったテーブルは下の4つです。
- m_racerテーブル
列名:id, name, class, branch(支部), … - d_card(出走表)テーブル
列名:race_date, jo_code, race_no, boat_no, racer_id, … - d_course(進入コース)テーブル
列名:race_date, jo_code, race_no, boat_no, course_no - d_result(結果)テーブル
列名:race_date, jo_code, race_no, boat_no, ranking
これらのデータがあればどんなデータも取ってこれるはずです。
データの準備
CSVファイル形式のレースれーたをテーブルにインポートするだけでデータをデータベースに入れることが出来ます。
データの抽出
phpMyAdminで以下のクエリを実行することで2コース1着率の全選手ランキングを取得できました。
クエリを書くことで、他にも「新概念データ」など知りたいデータを抽出することが出来ます。
結果はCSVで出力することが出来ました。
SELECT m_racer.id AS ID
,MAX(m_racer.name) AS Name
,MAX(m_racer.class) AS Class
,MAX(d_course.course_no) AS Course
,COUNT(*) AS Goukei
,SUM(
CASE WHEN d_result.ranking=1 THEN 1
ELSE 0
END) AS Kaisuu
, SUM(
CASE WHEN d_result.ranking=1 THEN 1
ELSE 0
END)/COUNT(*) AS Rate
FROM m_racer
JOIN d_card
ON m_racer.id = d_card.racer_id
JOIN d_course
ON d_course.race_date = d_card.race_date
AND d_course.jo_code = d_card.jo_code
AND d_course.race_no = d_card.race_no
AND d_course.boat_no = d_card.boat_no
JOIN d_result
ON d_result.race_date=d_card.race_date
AND d_result.jo_code=d_card.jo_code
AND d_result.race_no=d_card.race_no
AND d_result.boat_no=d_card.boat_no
WHERE d_course.course_no = 2
GROUP BY m_racer.id
ORDER BY rate DESC;
まとめ
欲しいデータを取れるようになったので、これからいろんなデータを抽出してみようと思います。
欲しいデータがあればぜひコメント欄などにお願いします。
取れそうなデータであれば挑戦してみようと思います。
コメント