目次
馬王ZのSQLの基本まとめ
馬王ZのSQLの基本について、初心者向けにまとめました。
少しでも参考になれば幸いです。
SELECT文の基本
SQL
SELECT フィールド名1,フィールド名2...
FROM テーブル名
WHERE 条件式
ORDER BY 順序を表す式
ポイント
- フィールド名を指定しない場合、フィールド名のところに「*」と書く
現役騎手をすべて表示して、若い順にソートする
SQL
SELECT 騎手名,生年月日
FROM 騎手マスタ
WHERE 騎手東西所属コード < 3 AND 騎手抹消区分 = 0
ORDER BY 生年月日 DESC
ポイント
- WHEREはANDで複数条件を繋げれます
- ORDER BY DESC:大きい値⇒小さい値
- ORDER BY ASC:小さい値⇒大きい値
複数テーブルの結合
出走馬テーブルと騎手マスタテーブルを結合させる
SQL
SELECT 馬番,馬名, 騎手マスタ.騎手名, 生年月日
FROM 出走馬T LEFT JOIN 騎手マスタ
ON 出走馬T.騎手コード = 騎手マスタ.騎手コード
WHERE 競走コード = 22012270611
ORDER BY 馬番 ASC
ポイント
- ON:テーブルの結合条件
- 両方のテーブルに同名のフィールドがある場合、どちらのテーブルのフィールドデータを使うか指定する必要がある
- LEFT JOINは左側に書いたテーブルが優先される。(つまり騎手テーブルの内容が空でも表示される)
- INNER JOINの場合、両方のテーブルにデータが存在する場合だけ結合される
レースT、出走馬T、騎手マスタを結合させる
SQL
SELECT 馬番,出走馬T.馬名, 騎手マスタ.騎手名, 騎手マスタ.生年月日, 繁殖馬名1
FROM ((レースT INNER JOIN 出走馬T
ON レースT.競走コード = 出走馬T.競走コード)
LEFT JOIN 競走馬マスタ
ON 出走馬T.血統登録番号 = 競走馬マスタ.血統登録番号)
LEFT JOIN 騎手マスタ
ON 出走馬T.騎手コード = 騎手マスタ.騎手コード
WHERE レースT.競走コード = 22012270611
ORDER BY 馬番 ASC
集計クエリー
競馬場毎の平均出走頭数を求める
SQL
SELECT 場名, Avg(頭数)
FROM レースT
WHERE 場コード <= 10 AND 月日 Between #2016/1/1# AND #2020/12/31#
GROUP BY 場名
ポイント
- GROUP BY でグループ分けを行う。
- Between演算子で範囲を指定する
- 日付は #2020/1/5# のような形式で指定する
その他、よく使われる演算子
どれかと一致するかを判定する In演算子
SQL
SELECT 年月日,場名,馬名
FROM レースT INNER JOIN 出走馬T
ON レースT.競走コード = 出走馬T.競走コード
WHERE 馬名 = "クロノジェネシス"
AND 場コード In (05, 06)
AND 年月日 Between #2019/01/1# And #2020/12/31#
ポイント
- 場コード In (05, 06)で、東京か中山に限定している
文字のあいまいな比較をする Like演算子
SQL
SELECT 馬名
FROM 競走馬マスタ
WHERE 馬名 Like "ディープ%"
ポイント
- 馬名 Like "ディープ%":先頭に"ディープ"の文字が入っている場合
- 馬名 Like "%ディープ%":最後に"ディープ"の文字が入っている場合
- 馬名 Like "%ディープ%":どこかに"ディープ"の文字が入っている場合
以上で、馬王ZのSQLの基本をまとめました。
初心者向けの初歩的な内容ばかりとなっておりますので、馬王で競馬で勝つゾという方は、是非SQLの専門書をお読みください。
SQLの入りとして少しでも参考になれば幸いです。
それでは素敵な競馬ライフをお送りください。