頻馬主義

競馬のデータをいろいろ見ていきます

【馬王Z SQL講座】 条件抽出

WHERE句:データの抽出条件を記述する

テーブルの中にあるデータから、何らかの条件に合致するレコードだけ抽出したいときには WHERE句を使います。

WHERE句を使った基本的な構文は下記の通りです。

SELECT
    [カラム名]
FROM
    [テーブル名]
WHERE
    [条件式]
;

数値で条件を指定

では、出走馬T テーブルから単勝配当が10,000円のデータを抽出するクエリを書いてみましょう。

SELECT
    *
FROM
    出走馬T
WHERE
    単勝配当 = 10000
;

このクエリのように、テーブルのデータを全件チェックするようなクエリは実行終了まで少し時間がかかります。*1

このクエリを実行すると、下図のような結果が得られます。*2

f:id:mare_ism:20210324071958p:plain

文字列で条件を指定

次に、出走馬T テーブルから馬名がアーモンドアイのデータを抽出するクエリを書いてみましょう。

SELECT
    *
FROM
    出走馬T
WHERE
    馬名 = "アーモンドアイ"
;

このように条件式に文字列を使う場合には「 " (ダブルクォート)」もしくは「 ' (シングルクォート)」で囲みます。

このクエリを実行すると、下図のような結果が得られます。

f:id:mare_ism:20210324072918p:plain

カラム同士の比較で抽出

抽出条件には上でやったように数値や文字列での指定もできますが、カラム同士の比較を用いることもできます。

出走馬T テーブルから 入線順位 と 確定着順 が等しくないデータを5件抽出するクエリを書いてみましょう。

出力対象のカラムは

  • 年月日
  • 馬名
  • 入線順位
  • 確定着順

とします。

SELECT TOP 5
    年月日,
    馬名,
    入線順位,
    確定着順
FROM
    出走馬T
WHERE
    入線順位 <> 確定着順
;

このクエリを実行すると、下図のような結果が得られます。

f:id:mare_ism:20210324073431p:plain

比較演算子

条件式を記述するときに使える比較演算子には以下のようなものがあります。

比較演算子 使い方 説明 備考
= A = B AとBは等しい
<> A <> B AとBは等しくない != は使えない
< A < B AはBより小さい
<= A <= B AはB以下
> A > B AはBより大きい
>= A >= B AはB以上

では、出走馬T テーブルから馬体重が630kg以上のデータを重い順に抽出するクエリを書いてみましょう。

出力対象のカラムは

  • 年月日
  • 馬名
  • 馬体重

とします。

SELECT
    年月日,
    馬名,
    馬体重
FROM
    出走馬T
WHERE
    馬体重 >= 630
ORDER BY
    馬体重 DESC
;

このクエリを実行すると、下図のような結果が得られます。

f:id:mare_ism:20210324083057p:plain

やっぱりショーグンは大きいですね!

*1:ブログ主の環境では30~40秒ほどかかりました。

*2:馬王Zのデータ取得状況によっては結果が一致しないことがあります。