実務につながるSQL中級演習:条件検索・集計・JOIN・副問い合わせ

ミサキ

ナナさん、SQLの基礎はできるようになってきたけど、もっと実務っぽいこともやってみたいな。

ナナ

それなら中級編にチャレンジしてみましょう!条件付き検索や集計、テーブル同士を結びつけるJOIN、そして副問い合わせも実務でよく使うのよ。

条件付き検索で絞り込もう

データを探すときには、ただ表示するだけじゃなくて「条件」をつけるのがポイント。

SELECT * FROM customers WHERE address LIKE '%東京%' AND email IS NOT NULL;

ミサキ

ANDを使うと「東京に住んでいて、メールアドレスがある人」だけ探せるんですね!

ナナ

その通り!ORを使えば「どっちかに当てはまる人」も探せるのよ。

集計関数でデータをまとめよう

集計とは、データの「合計」「平均」「最大・最小」「件数」などを出すこと。

SELECT address, COUNT(*) AS count FROM customers GROUP BY address;

ミサキ

これで「各地域に何人いるか」がわかるってことか〜!

ナナ

集計は、表では見えにくい情報をまとめてくれるから便利なのよ。

テーブルをつなげるJOINを体験しよう

実務では「顧客テーブル」と「注文テーブル」みたいに、データが分かれてるのが普通。そのときに使うのが JOIN

SELECT customers.name, orders.product_name, orders.price
FROM customers
JOIN orders ON customers.id = orders.customer_id;

ミサキ

別の表から情報をくっつけて見られるんですね!すごい!

ナナ

たとえば「誰がどの商品を買ったか」とか、JOINがなきゃ見えない情報があるの。

副問い合わせを使って絞り込みレベルアップ!

「特定の条件に合う人」だけをさらに絞り込みたいとき、副問い合わせ(サブクエリ)を使うのが便利。

SELECT name FROM customers
WHERE id IN (
  SELECT customer_id FROM orders WHERE price > 5000
);

ミサキ

中にSELECTが入ってる…ちょっと難しそう!

ナナ

大丈夫、要は「5,000円以上の買い物をした人を探すための一手間」なの。最初は読めなくても、慣れれば使えるようになるわよ。

応用演習:テーブル構造とクエリを考えてみよう

テーブル例:customers

id name email address
1 佐藤 太郎 taro@example.com 東京都渋谷区
2 鈴木 花子 hanako@example.com 大阪府大阪市
3 田中 一郎 ichiro@example.com 北海道札幌市

テーブル例:orders

id customer_id product_name price
1 1 ノートPC 120000
2 2 USBケーブル 800
3 1 マウス 2500

問題:

  1. 東京都に住む顧客の名前を表示するSQLを書こう
  2. 1人あたりの注文数を数えて表示しよう
  3. 5,000円以上の商品を買った人の名前を表示しよう
  4. 注文のない顧客も含めて全員の名前と商品を表示しよう(LEFT JOIN)

まとめ

テーマ 内容
条件検索 WHERE, AND, OR, LIKE
集計 COUNT, SUM, GROUP BY
JOIN 複数テーブルの情報を結びつける
副問い合わせ サブクエリでさらに絞り込む

ミサキ

中級編って難しそうだったけど、やってみると面白いかも…!

ナナ

よく頑張ったね、ミサキちゃん!この力があれば、現場でも十分活躍できるわよ♪

← 前の記事 次の記事 →