PC-KEIBA Database 活用ガイド

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


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

SQL の作成

ここでは競馬データの定番である「基準タイム」を算出する SQL を作ってみましょう。

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

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

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


サンプルコード

[基準タイム作成 SQL]

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

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

AND RA.KAISAI_NENGAPPI >= JULIANDAY('2009-01-01')
AND RA.KAISAI_NENGAPPI <= JULIANDAY('2009-12-31')

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

FROM (((((
  JVD_RACE_SHOSAI RA
INNER JOIN JVD_UMAGOTO_RACE_JOHO UM
ON (UM.RACE_CODE = RA.RACE_CODE
))
LEFT OUTER JOIN JVD_KEIBAJO_CODE KE
ON (KE.CODE = RA.KEIBAJO_CODE
))
LEFT OUTER JOIN JVD_KYOSO_SHUBETSU_CODE KS
ON (KS.CODE = RA.KYOSO_SHUBETSU_CODE
))
LEFT OUTER JOIN JVD_KYOSO_JOKEN_CODE KJ
ON (KJ.CODE = RA.KYOSO_JOKEN_CODE_SAIJAKUNEN
))
LEFT OUTER JOIN JVD_TRACK_CODE TR
ON (TR.CODE = RA.TRACK_CODE
))
WHERE 1 = 1
AND RA.DATA_KUBUN = '7'
AND RA.KAISAI_NENGAPPI >= CDATE('2009-01-01')
AND RA.KAISAI_NENGAPPI <= CDATE('2009-12-31')

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

※上記の SQL は JRA-VAN データを使用して集計する場合のサンプルです。競馬道 OnLine データで集計する場合はテーブル名や WHERE 句の条件を適宣、変更する必要があります。

なお、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 出力は 以上です。


PC-KEIBA Database 活用ガイド