第1回:コピペで覚える!「SELECT文」で欲しいデータだけを取り出す魔法
「SQL(エスキューエル)」と聞くと難しいプログラミングを連想しがちですが、実際は「データベースという巨大な本棚から、欲しい書類だけを持ってきてもらう注文書(メモ)」にすぎません。
プログラミング言語のように複雑な計算式やループ処理を書く必要はなく、「どこの本棚から(FROM)」「どの項目を(SELECT)」「どんな条件で(WHERE)」を英語の単語で並べるだけで完了します。
「【メニュー表】 の中から、【ハンバーグ】 と 【ライス】 を持ってきてください!」
「FROM 【テーブル名】 から、SELECT 【見たいデータ列】 を持ってきて!」
SQLの一番基本となる形は、以下の2行だけです。
SELECT horse_number, senko
FROM kol_stride;
| 書いた言葉 | 意味 | 店員さんへの命令内容 |
|---|---|---|
FROM kol_stride |
どのテーブルから? | 「ストライド指数が入っているテーブル(本棚)を開いて!」 |
SELECT horse_number, senko |
どの列(項目)を? | 「その中から『馬番』と『先行力』の列だけ抜き出して見せて!」 |
見たい項目が複数ある場合は、horse_number, senko, tsuiso のように「半角カンマ(,)」で区切って並べます。最後の項目の後ろにはカンマを付けません。
アプリ内メニューの『ヘルプ(H)』 ➔ 『📑 全テーブル定義書(仕様書)』を開くと、データベースに存在する全テーブルのカラム名(英語名・日本語名・データ型)を一覧で確認・CSV形式等でダウンロードできます。どのテーブルにどんなデータが入っているか迷った際はご活用ください。
データベースの中身は、コンピュータが扱いやすいように race_date(開催日)や st(ST指数)といった英語の名前になっています。
そのまま取り出すと見出しが英語になって見づらいため、単語の後ろに AS 日本語名 を付けると、見出しを日本語に変換して取り出すことができます。
SELECT
race_date AS 開催日,
venue_code AS 場コード,
race_number AS レース,
horse_number AS 馬番,
st AS ST指数,
senko AS 先行力,
bias AS バイアス
FROM kol_stride
LIMIT 10;
「AS 〇〇」を書いておくと、Excelに貼り付けた瞬間に1行目が綺麗な日本語見出しになります
全頭を表示するのではなく、「特定の日のレースだけ」「先行力が高い馬だけ」のように絞り込みたいときは、WHERE(ウェア)を使います。
SELECT race_date AS 開催日, race_number AS R, horse_number AS 馬番, st AS ST指数
FROM kol_stride
WHERE race_date = '20260823';
※日付や文字列を指定するときは、必ず '20260823' のように「シングルクォーテーション(')」で囲みます。
SELECT race_date AS 開催日, horse_number AS 馬番, senko AS 先行力, tsuiso AS 追走力
FROM kol_stride
WHERE senko >= 55.0;
※「先行力が55.0以上」の馬だけを取り出します。数字にはシングルクォーテーションを付けません。
SELECT race_date AS 開催日, horse_number AS 馬番, senko AS 先行力, tsuiso AS 追走力
FROM kol_stride
WHERE senko >= 55.0 AND tsuiso >= 50.0;
※「先行力55.0以上」かつ「追走力50.0以上」という強力な先行馬だけを絞り込みます。
競馬予想で最も重要な「指数の高い順に並べる」「上位10頭だけを表示する」という命令です。
SELECT horse_number AS 馬番, st AS ST指数
FROM kol_stride
WHERE race_date = '20260823'
ORDER BY st DESC;
ORDER BY st DESC ➔ ST指数の大きい順(降順:高い順)に並び替えます。ORDER BY st ASC ➔ ST指数の小さい順(昇順:低い順)に並び替えます(※着順などを並べるときに使用)。SELECT horse_number AS 馬番, st AS ST指数
FROM kol_stride
ORDER BY st DESC
LIMIT 10;
※データベースに何万件のデータがあっても、先頭から指定した件数(ここでは10件)だけを高速に取得して画面に表示します。
Alma Core Pro を使ってデータを抽出し、Excelに貼り付けるまでの流れは以下の手順です。
SQLを [Ctrl + V] で貼り付けて「▶ SQL実行」➔「📊 Excel用コピー」を押すだけでExcel連携が完結します
以下の枠内のSQLをそのままコピーしてアプリに貼り付けるだけで、即座に実戦データが抽出できます。
レシピ 1 直近レースの能力バランス(総合力・先行・追走・瞬発)一覧
各馬の主要指数を横並びで抽出し、レース内の力関係や適性の違いをチェックします。
SELECT
race_date AS 開催日,
venue_code AS 場コード,
race_number AS R,
horse_number AS 馬番,
st AS ST指数,
senko AS 先行力,
tsuiso AS 追走力,
shunpatsu AS 瞬発力,
bias AS バイアス
FROM kol_stride
ORDER BY race_date DESC, CAST(race_number AS INTEGER) DESC
LIMIT 15;
Excelで馬ごとの瞬発力や追走力の違いが一目瞭然になります
レシピ 2 軸馬候補!先行力55以上 & 追走力50以上の強力先行馬
展開に左右されにくく好走確率の高い「先行・追走の両方を兼ね備えた実力馬」だけを抽出します。
SELECT
race_date AS 開催日,
venue_code AS 場,
race_number AS R,
horse_number AS 馬番,
st AS ST指数,
senko AS 先行力,
tsuiso AS 追走力
FROM kol_stride
WHERE senko >= 55.0 AND tsuiso >= 50.0
ORDER BY race_date DESC, CAST(race_number AS INTEGER) DESC
LIMIT 20;
軸馬候補となるハイレベルな先行馬だけがズラリと抽出されます
SQLを実行してエラーが出たときは、99%が以下のいずれかの原因です。落ち着いて確認してみましょう。
| よくある原因 | 間違いの例 | 正しい書き方・対策 |
|---|---|---|
| ① 全角文字が入っている | SELECT(全角英字)WHERE senko >= 50(全角空白) |
SQLのコマンド・空白・記号はすべて半角で記述する必要があります。日本語が使えるのは AS 日本語名 の部分と、クォーテーションで囲んだ文字の中身だけです。 |
| ② 最後のカンマ(,)の付けすぎ | SELECT horse_number, senko, FROM kol_stride; |
FROM の直前にある最後の項目(ここでは senko)の後ろにはカンマを付けてはいけません。 |
| ③ クォーテーションの閉じ忘れ | WHERE race_date = '20260823; |
文字列を囲むシングルクォーテーション(')は、必ず前と後ろで対(ペア)になるように閉じます。 |