【BigQuery】BETWEENで範囲指定しよう!使い方とそのポイントを紹介

BigQuery_Between演算子 クラウドプラットフォーム

範囲を絞るときどんな演算子を使いますか?

最もよく使うのは比較演算子でしょう.
<(小なり)、>(大なり)は数式のように使えます.

同じように範囲を指定できる演算子にBETWEEN演算子があります.
比較演算子と比べると汎用性は低いですが、可読性が高いのはBETWEEN演算子でしょう.

今回はBETWEEN演算子の使い方、そのポイントについてご紹介します。

BETWEEN演算子の基本形

BETWEEN演算子はこのように書きます.

SELECT
  カラム
FROM
  テーブル
WHERE カラム BETWEEN  条件1 AND 条件2

BETWEEN を書く位置は WHERE句です.

WHERE と BETWEEN の間にはカラム書きましょう.
このカラムが範囲指定の対象です.

BETWEEN の後には範囲を絞る条件1と条件2を書きます.

英語の構文のようで覚えやすいなと思いました.
「BETWEEN A AND B」と覚えましたよね.

次は実際にBETWEEEN演算子を使ってみましょう。

BETWEEN演算子を使い範囲を指定する

2023年7月27日10時00分00秒〜2023年7月27日11時00分00秒まで1分置きのデータを用意しました.

10:00:00~11:00:00の1分おきの時間データ|クリックして拡大できます

BETWEEN演算子を使い10時00分~10時15分まで表示しましょう.

SELECT
  datetime
FROM
  `test.20230727_time`
WHERE
  datetime BETWEEN '2023-07-27 10:00:00'
  AND '2023-07-27 10:15:00'
ORDER BY
  datetime ASC
BETWEEN演算子で10:00:00~10:15:00で範囲を絞りデータを取り出す

指定した範囲のデータをきちんと取れていますね.
ここからはBETWEEN演算子のポイントをまとめます。

ポイント1 境界値は含まれる

BETWEEN演算子は条件値を含んだ結果を返します.

日本語にすると「条件1以上、条件2以下」です.
未満ではないことに注意しましょう.

比較演算子になおすと次のようになります.

SELECT
  datetime
FROM
  `test.20230727_time`
WHERE
  datetime >= '2023-07-27 10:00:00'
  AND datetime <= '2023-07-27 10:15:00'
ORDER BY
  datetime ASC
BETWEEN演算子を比較演算子を使って書き直す|クリックして拡大できます

なぜ条件に指定した値まで含むかは公式資料を見ると分かりました。

expr1 BETWEEN expr2 AND expr3

Returns true if the value of expr1 is greater than or equal to expr2, and less than or equal to expr3.

Google Cloud
Legacy SQL Functions and Operators  |  BigQuery  |  Google Cloud

カラム(expr1)が条件1(expr2)よりも大きいまたは等しい、かつ条件2(expr3)よりも小さいまたは等しいとき真を返す

等しい場合も真とするため、10時00分や10時15分も表示されていたんですね。

比較演算子を使うよりもBETWEEN演算子を使ったほうが読みやすいと思いました.
比較演算子は矢印の向きに注意する必要がありましたが、BETWEEN演算子はその必要がありません.

ポイント2 ORは使えない

AND が使えたので、OR も使えるか試しましたがだめでした.

BWTWEEN と AND はセットのようです.
ほんと英語のように「BETWEEN A AND B」で覚えましょう!

BETWEEN演算子にORは使えない|クリックして拡大できます

いずれか1つの条件を満たしたいときは比較演算子を使いOR条件を使うのがよさそうですね。

ポイント3 条件2は条件1よりも大きい値でないといけない

条件2は条件1よりも必ず大きい値を指定しなければなりません.(条件1<条件2)

条件2のほうが小さい時うまく範囲を指定できないので注意しましょう.

条件1のほうが条件2よりも大きいとうまく範囲を指定できない|クリックして拡大できます
SELECT
  datetime
FROM
  `test.20230727_time`
WHERE 
  datetime BETWEEN '2023-07-27 10:15:00'
  AND '2023-07-27 10:00:00'
ORDER BY
  datetime ASC

まとめ

今回はBETWEEN演算子の使い方やその特徴について紹介しました.

基本的な使い方はSQLと同じでしたね.
SQLでもBETWEEN演算子は条件値を含んだ結果を返します.

ポイントはこちらでした.

  • 「BETWEEN 条件1 AND 条件2」は「条件1以上条件2以下」という意味
  • AND を OR に書き換えられない
  • 「条件2 > 条件1」 条件2は条件1よりも大きい値を書く

BETWEEN演算子は 「条件1 >= AND <= 条件2」と同じ意味があります.
BETWEEN演算子のほうや読みやすいメリットがあると思いました.