【WHERE句】大量データから一瞬でリストを作る方法

はじめに

10万行を超えるExcelデータで「特定の条件」をフィルタリングし、コピーして別シートに貼り付ける……。

この作業、人間がやるとどんなに急いでも数分はかかりますし、途中でExcelが固まってしまったら数十分のロスになります。

一方で、SQLを使ったデータ抽出は、あなたがコードを書いて「実行」ボタンを押した瞬間に、コンピュータが裏側で猛スピードで処理を始めます。

環境によって処理時間は異なりますが、「人間がチマチマとマウスを動かす時間」をほぼゼロにできるのがSQLです。

1. WHERE句の基本

WHERE句は、データベースに対して「この条件に合うものだけを見せて!」と命令する、
いわば「ふるい」の役割です。

基本の書き順

SELECT
 *
FROM 
 `あなたのテーブル名`
WHERE 
 絞り込みたい条件;

一番のポイントは、必ずFROM(テーブル名)の後に書くこと。

これさえ守れば、複雑な抽出も簡単になります。

2. 手元のデータで「抽出」を体験しよう

今回アップロードしたCSVを使って、実務でよくある抽出依頼を再現します。

商品リスト(products)から「高単価商品」を抽出
例えば、価格が10,000円以上の商品だけを抜き出して、高単価アイテムのリストを作ります。

SELECT 
  product_name, 
  price
FROM 
  `test.products`
WHERE 
  price >= 10000;

このSQLを実行することで、下記のようにデータが抽出されます。

ピンク枠:
WHERE句で指定した、「判定の基準」となるカラムとそのデータを表しています。

price >= 10000 と記述することで、対象カラムを「price(金額)」に特定し、演算子(>=)によって「10,000以上であること」を条件として定義しています。

SQLは、この条件をもとに全データの中から合致するレコード(行)を探索します。

オレンジ枠:
WHERE句の条件を満たし、最終的な出力対象として「救い上げられた行」を表しています。

今回のデータセットでは、priceが10,000円以上という条件に合致するのはオレンジ枠の2行のみとなります。

グリーン枠:
SELECT句で指定した、「画面に表示させる項目」を表しています。

オレンジ枠で抽出されたレコードに対して、さらに『product_name(商品名)』と『price(金額)』の列のみを表示するよう制御しています。

最終結果

3. 実務でよく使う「条件指定」のパターン

① 文字列で絞り込む(完全一致)
顧客リスト(customers)から「東京都」のユーザーだけを抽出する場合です。文字列は必ず ‘ ‘(シングルクォーテーション) で囲みます。

SELECT 
  *
FROM 
  `test.customers`
WHERE 
  prefecture = '東京都'

② あいまいなキーワードで絞り込む(LIKE句)
商品名に「シャツ」が含まれるものを探すときは LIKE を使います。

SELECT 
  *
FROM 
  `test.products`
WHERE
  product_name LIKE '%シャツ%'

% は「どんな文字が入ってもOK」という記号です。

まとめ

お疲れ様でした!

今回のステップで、あなたは膨大なデータの中から「必要な情報だけ」をピンポイントで抜き出すスキルを手に入れました。