PC-KEIBA Database Use Guide

Step2:SQL の作成と実行 〜 CSV 出力

当コーナーではデータベースや SQL に触れたことのないユーザーを対象に「PC-KEIBA Database」の具体的な活用方法を紹介します。

PC-KEIBA Database 活用ガイド

Learning

SQL の作成

ここでは競馬データのスタンダードとも言える「基準タイム」を算出する SQL を作ってみましょう。

今回、作成する基準タイムの 集計条件 は、

・中央競馬2007年の
・牝馬限定戦、ハンデ戦を除く
・良馬場の
・1着〜3着馬の平均タイムを
・レース単位で集計

と、しておきましょう。
※言うまでもありませんが、ここでは SQL のサンプル を提示することのみが目的です。上記の集計方法が必ずしも正しい基準タイムの算出方法ではありません。


サンプルコード

[基準タイム作成 SQL]

SELECT
  T1.RACE_CODE,
  T3.CONTENT AS KEIBAJO,
  T4.CONTENT AS KYOSO_SHUBETSU,
  T5.CONTENT AS KYOSO_JOKEN,
  T1.KYORI,
  T6.CONTENT AS TRACK,
  AVG(T2.SOHA_TIME) AS SOHA_TIME
FROM
  JVD_RACE_SHOSAI T1
  INNER JOIN JVD_UMAGOTO_RACE_JOHO T2 ON T1.RACE_CODE = T2.RACE_CODE
  LEFT OUTER JOIN JVD_KEIBAJO_CODE T3 ON T1.KEIBAJO_CODE = T3.CODE
  LEFT OUTER JOIN JVD_KYOSO_SHUBETSU_CODE T4 ON T1.KYOSO_SHUBETSU_CODE = T4.CODE
  LEFT OUTER JOIN JVD_KYOSO_JOKEN_CODE T5 ON T1.KYOSO_JOKEN_CODE_SAIJAKUNEN = T5.CODE
  LEFT OUTER JOIN JVD_TRACK_CODE T6 ON T1.TRACK_CODE = T6.CODE
WHERE
  T1.DATA_KUBUN = '7' AND
  '2007-01-01' <= T1.KAISAI_NENGAPPI AND
  T1.KAISAI_NENGAPPI <= '2007-12-31' AND
  T1.KYOSO_KIGO_CODE NOT LIKE '%20' AND
  T1.KYOSO_KIGO_CODE NOT LIKE '%21' AND
  T1.KYOSO_KIGO_CODE NOT LIKE '%23' AND
  T1.KYOSO_KIGO_CODE NOT LIKE '%24' AND
  T1.JURYO_SHUBETSU_CODE <> '1' AND
  (T1.SHIBA_BABAJOTAI_CODE = '1' OR T1.DIRT_BABAJOTAI_CODE = '1') AND
  T2.KAKUTEI_CHAKUJUN <= 3
GROUP BY
  T1.RACE_CODE,
  T3.CONTENT,
  T4.CONTENT,
  T5.CONTENT,
  T1.KYORI,
  T6.CONTENT
ORDER BY
  T1.RACE_CODE ASC

[SQLite の場合]
SQLite の日付型データの抽出条件は JULIANDAY 関数 を使って指定します。

  JULIANDAY('2007-01-01') <= T1.KAISAI_NENGAPPI AND
  T1.KAISAI_NENGAPPI <= JULIANDAY('2007-12-31') AND

[Access の場合]
1.Access の場合は FROM 句の結合条件を1節ごとにカッコで括ってやります。
2.日付型データの抽出条件は CDATE 関数 を使って指定します。

FROM
  ((((JVD_RACE_SHOSAI T1
  INNER JOIN JVD_UMAGOTO_RACE_JOHO T2 ON T1.RACE_CODE = T2.RACE_CODE)
  LEFT OUTER JOIN JVD_KEIBAJO_CODE T3 ON T1.KEIBAJO_CODE = T3.CODE)
  LEFT OUTER JOIN JVD_KYOSO_SHUBETSU_CODE T4 ON T1.KYOSO_SHUBETSU_CODE = T4.CODE)
  LEFT OUTER JOIN JVD_KYOSO_JOKEN_CODE T5 ON T1.KYOSO_JOKEN_CODE_SAIJAKUNEN = T5.CODE)
  LEFT OUTER JOIN JVD_TRACK_CODE T6 ON T1.TRACK_CODE = T6.CODE
WHERE
  T1.DATA_KUBUN = '7' AND
  CDATE('2007-01-01') <= T1.KAISAI_NENGAPPI AND
  T1.KAISAI_NENGAPPI <= CDATE('2007-12-31') AND

WHERE 句、GROUP BY 句の部分を変更することで、基準タイムの条件を自由自在に定義することができます。
データの抽出条件や集計条件については、データ仕様書とにらめっこしながらカスタマイズを行ってみてください。

なお、SQL の詳細については、リンク集に掲載している SQL 関連のサイトや書籍を参考にしてください。



SQL の実行

それでは上記で作成した SQL を実行してみましょう。
初めての人も、よくわからない人も、とりあえず上記の SQL をコピーしてエディタに貼り付けて、以下の手順で実行してみてください。

画面上部にあるツールバーメニューから [ データベース ] → [ 実行 ] を選択します。


実行結果が出力されました。
SOHA_TIME の項目が集計条件の「1〜3着馬の平均タイム」です。



CSV ファイルの作成

CSE では SQL の実行結果を CSV ファイルに簡単に保存することができます。

コンソールに SQL の実行結果が出力された状態で、
ツールバーメニューから [ データベース ] → [ 取得した結果をファイルへ出力 ] を選択します。


ファイル名を入力して「保存」ボタンをクリックします。


CSV ファイルが作成されました。



この CSV ファイルを Excel のワークブックにインポートすれば、Excel 上でデータ集計を展開することが可能です。
このようにデータベースだけでなく、複数のツールの長所(得意分野)を活かすことでデータ分析の幅は無限に広がります。このあたりはご自身で試行錯誤してください。

また、作成した SQL もテキストファイルなどに保存して、集計条件の部分のみを変更すれば再利用できますね。


改訂新版 SQLポケットリファレンス (Pocket reference) 改訂新版 SQLポケットリファレンス (Pocket reference)
朝井 淳

技術評論社 2003-06-10
売り上げランキング : 14411
おすすめ平均

Amazonで詳しく見る
by G-Tools

SQL の作成と実行 〜 CSV 出力は 以上です。