お馬の写真 別館

「お馬の写真」管理者による徒然なるブログ

DataLab.を使って「下級レースから順番に勝ち上がった馬」を探してみる (その1)

      2015/07/16

20090505_funabashi10_00

新馬(未勝利)→500万→1000万→1600万→OP特別→GⅢ→GⅡ→GⅠ

この順にきっちり勝ちあがった馬っている?

という話を「【競馬】下級レースから順番に勝ち上がった馬っている?」で見かけました。

どうも答えはエイシンデピュティらしいのですが、他にもいないのか、という気もしないでもないのでDataLab.を使って調べてみます。

余談ですが、一口出資していたエスポワールシチーも微妙に惜しくて、未勝利→500万→1000万→1600万→OP特別→G3→G1。G2は一度も走る機会がなかったのでやむなしです。

以前にも書いたような気がしますが、DataLabのデータは「PC-KEIBA Database for JRA-VAN Data Lab.」を使ってMySQLに取り込んでいるので、MySQL上でのSQLを書く形で調べてみます。

まず最初にJRA-VAN DataLab.で登録されているレースで実際に使われている条件を調べてみましょうか。

SELECT distinct b.content
FROM jvd_race_shosai a,jvd_kyoso_joken_code b
WHERE a.kyoso_joken_code_saijakunen=b.code
ORDER BY b.code;
+--------------+
| content      |
+--------------+
|              |
| 100万        |
| 200万        |
| 300万        |
| 400万        |
| 500万        |
| 600万        |
| 700万        |
| 800万        |
| 900万        |
| 1000万       |
| 1400万       |
| 1500万       |
| 1600万       |
| 新馬         |
| 未出走       |
| 未勝利       |
| オープン     |
+--------------+

条件が設定されていないものは仕方ないとして、100万、200万、300万あたりはなんだろう…ということで調べてみます。まず100万。

SELECT a.race_code, b.contentkeibajo
FROM jvd_race_shosai a, jvd_keibajo_code b
WHERE a.keibajo_code=b.code
AND kyoso_joken_code_saijakunen='001';
+------------------+---------+
| race_code        | keibajo |
+------------------+---------+
| 1967090901020408 | 札幌    |
+------------------+---------+

なぜか1967年なんて古いデータが入っていたようなので、検索対象のレース期間を絞ることで後ほど除くようにしましょう。

次に200万。

SELECT a.race_code, b.content keibajo
FROM jvd_race_shosai a, jvd_keibajo_code b
WHERE a.keibajo_code=b.code
AND kyoso_joken_code_saijakunen='002';
+------------------+---------+
| race_code        | keibajo |
+------------------+---------+
| 19910310A8000000 | 仏国    |
| 19910316A8000000 | 仏国    |
| 19910419A8000000 | 仏国    |
| 19920505A8000000 | 仏国    |
+------------------+---------+

今度はすべて海外のレースなので、これも除外するように。

次に300万。

SELECT a.race_code, b.content keibajo
FROM jvd_race_shosai a, jvd_keibajo_code b
WHERE a.keibajo_code=b.code
AND kyoso_joken_code_saijakunen='003';

実はこれを実行すると130件以上ヒットします。

内容を見るために競走種別も表示するようにしてみます。

SELECT a.race_code, b.content keibajo,
c.content shubetsu
FROM jvd_race_shosai a, jvd_keibajo_code b,
jvd_kyoso_shubetsu_code c
WHERE a.keibajo_code=b.code
AND a.kyoso_shubetsu_code=c.code
AND kyoso_joken_code_saijakunen='003';
+------------------+---------+------------------------+
| race_code        | keibajo | shubetsu               |
+------------------+---------+------------------------+
| 1986010508010101 | 京都    | アラブ系3歳以上        |
| 1986010606010201 | 中山    | アラブ系3歳以上        |
| 1986011506010602 | 中山    | アラブ系3歳以上        |
…
| 1975110908050406 | 京都    | サラ系2歳              |
| 1976022205020807 | 東京    | サラ系3歳              |
…
| 19901109A8000000 | 仏国    | サラ系2歳              |
+------------------+---------+------------------------+

アラ系のレースと1970年代のレース、海外のレースが全てでしたので、これも除外するようにしましょう。

400万、500万は1勝馬クラスなので問題なし。変なデータが入っていたら後で考えましょう。

同じように見ていくと600万と800万は、古いデータとアラ系、700万はアラ系のみなので、これまでのパターンで除外可能。
900万、1000万が2勝馬クラス、1400万、1500万、1600万は準オープンクラスなので、問題なし。

ということで、古いレース、海外のレース、アラ系のレース、条件未設定のものを除外してみると…

SELECT distinct b.content
FROM jvd_race_shosai a,jvd_kyoso_joken_code b
WHERE a.kyoso_joken_code_saijakunen=b.code
AND a.kaisai_nengappi>='1986-01-01'
AND a.data_kubun<>'B'
AND a.kyoso_shubetsu_code<'20'
AND a.kyoso_joken_code_saijakunen<>'000'
ORDER BY b.code;
+--------------+
| content      |
+--------------+
| 400万        |
| 500万        |
| 900万        |
| 1000万       |
| 1400万       |
| 1500万       |
| 1600万       |
| 新馬         |
| 未出走       |
| 未勝利       |
| オープン     |
+--------------+

次に各条件に対して番号を振っていってみましょうか。
ちょっと長くなってきたので続きはまた後日。

記事一覧

DataLab.を使って「下級レースから順番に勝ち上がった馬」を探してみる (その1)
DataLab.を使って「下級レースから順番に勝ち上がった馬」を探してみる (その2)
DataLab.を使って「下級レースから順番に勝ち上がった馬」を探してみる (その3)

 

 - プログラミング