このブログでは、馬王Zの回収率データ分析を活用しながら、SQLを使って条件を深掘りし、その結果を予想カスタマイズに組み込んでいく過程を公開していきます。
SQL初心者の私がGemini(Google AI)と相談しながらコードを考えていくスタイルで進めます。難しく考えず、一緒にデータ競馬の世界を深掘りしていきましょう。
基本方針
分析の流れ
このシリーズでは、以下の流れで分析を進めます。
- 馬王Zの回収率データ分析で仮説を立てる
- SQLで条件を深掘り・検証する
- 有効な条件を予想カスタマイズに組み込む
※馬王Zにはカスタムキーワードも有効ではありますが、現時点では対象外としています。
分析対象
| 項目 | 内容 |
|---|---|
| 期間 | 2023年1月〜2025年12月 |
| 競馬種別 | 中央競馬 |
| 馬場 | 芝・ダート |
| 除外 | 新馬戦・障害 |
回収率データ分析画面でも、共通条件として「芝・ダート」にチェック、「新馬戦以外」を選択した状態で進めます。
主な参考資料
書籍:馬王Z投資馬券術
馬王Zの活用方法をまとめた公式に近い書籍です。データベースの構造やSQL活用のヒントが詳しく解説されており、このシリーズの主な教科書として活用しています。
Gemini(Google AI)
SQLコードを考える際の相談相手として活用します。「こういう条件で集計したい」という意図をGeminiに伝え、コードを一緒に作っていくスタイルで進めます。
馬王Z公式ヘルプ
馬王Zのテーブル構造やフィールドの仕様を確認するために参照します。
馬王ZにおけるSQLの基本ルール
馬王ZのSQLは、マイクロソフトの「Access」データベースと互換性があるシステムを使っています。そのためAccessのSQL(Jetデータベースエンジン)と共通の書き方になります。
SQLを試すには、馬王Zの[ツール(T)]→[データベース操作(D)]を選択し、表示されるデータベース操作ウィンドウのSQL入力欄にSQLを書いて実行ボタンを押します。
書き方の基本的な決まりごと
- アルファベットの大文字と小文字は区別されない(SELECTもselectも同じ)
- 習慣としてSQLの命令文(SELECT・FROMなど)は大文字で書く
- スペース・カンマ(,)は半角文字を使う
- セミコロン(;)があるとそこがひとつのSQL文の終わりと判断される
基本構文
データを表示するための基本のSQL文は以下の通りです。
SELECT 式1 [, 式2, ...]
FROM テーブル名
[WHERE 条件式]
[ORDER BY 順序をあらわす式]
| 命令 | 意味 |
|---|---|
| SELECT | 取り出すフィールド名をカンマで区切って並べる。すべてのフィールドを取り出す場合は * と書く |
| FROM | 取り出すもとになるテーブル名を書く |
| WHERE | 取り出すレコードの条件を書く |
| ORDER BY | レコードの順序を決める式を書く。小さい順に並べ替えられる。大きい順にしたい場合は式の後に半角スペースを1つ開けてDESCと書く |
集計クエリー(GROUP BY)
単純にレコードを抽出するのではなく、データを集計して表示する場合は集計クエリーを使います。馬王Zの回収率データ分析もこの集計クエリーで実現されています。
集計クエリーでできる主な集計関数は以下の通りです。
| 関数 | 意味 |
|---|---|
| Avg(フィールド名) | フィールドの値の平均値を返す |
| Sum(フィールド名) | フィールドの値の合計を返す |
| Count(フィールド名) | 件数をカウントして返す |
| Min(フィールド名) | フィールド名の値の最小値を返す |
| Max(フィールド名) | フィールド名の値の最大値を返す |
複数のテーブルを結合する(JOIN)
実際には取り出したいデータが複数のテーブルにまたがっている場合があります。そのときはJOINを使ってテーブルを結合します。
- LEFT JOIN:左側に書いたテーブルが優先される。右側のテーブルに連結できるレコードがなくても空欄として表示される
- INNER JOIN:双方のテーブルに条件に合致するデータが存在するときだけ結合される
論理演算子(AND・OR・NOT)
| 演算子 | 意味 |
|---|---|
| And | 左右の式がともに真のとき真(True)を返す。日本語の「かつ」に相当 |
| Or | 左右の式のどちらかが真のとき真(True)を返す。日本語の「または」に相当 |
| Not | 条件式の判定結果を逆にする |
なお、AndとOrを組み合わせる場合はAndのほうが優先順位が高いので、意図した通りに動かすにはカッコを使って式を明確にするのがおすすめです。
IIf関数
馬王Zのカスタマイズでとくに重要な関数です。条件式の結果によって、違う式の結果が採用されるという働きをします。
IIf(条件式, 条件式が真のときの式, 条件式が偽のときの式)
IIf関数は入れ子にして複雑な条件判断にも対応できます。ただし入れ子が深くなるとカッコの対応や式の意味がわかりにくくなるため、インデント(字下げ)表記を使って見やすく書くのがおすすめです。
コメントの書き方
SQL文中に覚書としてコメントを書く方法が2つあります。
- //:その行の最後までをコメントとして扱う(行単位)
- /* 〜 */:「/*」と「*/」に囲まれた範囲をコメントとして扱う(複数行対応)
コメントはSQL文の実行には影響しません。式の意味を書き留めておくのに活用してください。
次回から実際の分析へ
次の記事からは、実際にSQLコードを作りながら条件の検証を進めていきます。まずは基本的な集計から始めて、少しずつ条件を深掘りしていく予定です。
試行錯誤の過程もすべて公開していきますので、同じようにデータ競馬に取り組んでいる方の参考になれば嬉しいです。

