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

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

それなら中級編にチャレンジしてみましょう!条件付き検索や集計、テーブル同士を結びつけるJOIN、そして副問い合わせも実務でよく使うのよ。
条件付き検索で絞り込もう
データを探すときには、ただ表示するだけじゃなくて「条件」をつけるのがポイント。
SELECT * FROM customers WHERE address LIKE '%東京%' AND email IS NOT NULL;
%東京%
:住所に「東京」が含まれるAND
:複数の条件を組み合わせるIS NOT NULL
:空じゃない値だけを対象にする

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

その通り!ORを使えば「どっちかに当てはまる人」も探せるのよ。
集計関数でデータをまとめよう
集計とは、データの「合計」「平均」「最大・最小」「件数」などを出すこと。
SELECT address, COUNT(*) AS count FROM customers GROUP BY address;
COUNT(*)
:件数を数えるGROUP BY
:住所ごとにグループを作る

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

集計は、表では見えにくい情報をまとめてくれるから便利なのよ。
テーブルをつなげるJOINを体験しよう
実務では「顧客テーブル」と「注文テーブル」みたいに、データが分かれてるのが普通。そのときに使うのが JOIN
!
SELECT customers.name, orders.product_name, orders.price
FROM customers
JOIN orders ON customers.id = orders.customer_id;
JOIN
:2つのテーブルをつなげるON
:どの列でつなぐか指定

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

たとえば「誰がどの商品を買ったか」とか、JOINがなきゃ見えない情報があるの。
副問い合わせを使って絞り込みレベルアップ!
「特定の条件に合う人」だけをさらに絞り込みたいとき、副問い合わせ(サブクエリ)を使うのが便利。
SELECT name FROM customers
WHERE id IN (
SELECT customer_id FROM orders WHERE price > 5000
);
IN
:中にあるIDの人だけ対象- 中の
SELECT
がまず実行される

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

大丈夫、要は「5,000円以上の買い物をした人を探すための一手間」なの。最初は読めなくても、慣れれば使えるようになるわよ。
応用演習:テーブル構造とクエリを考えてみよう
テーブル例:customers
id | name | 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 |
問題:
- 東京都に住む顧客の名前を表示するSQLを書こう
- 1人あたりの注文数を数えて表示しよう
- 5,000円以上の商品を買った人の名前を表示しよう
- 注文のない顧客も含めて全員の名前と商品を表示しよう(LEFT JOIN)
まとめ
テーマ | 内容 |
---|---|
条件検索 | WHERE, AND, OR, LIKE |
集計 | COUNT, SUM, GROUP BY |
JOIN | 複数テーブルの情報を結びつける |
副問い合わせ | サブクエリでさらに絞り込む |

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

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