データの分類とラベル付け
値をカテゴリに変換します。
「データの分類とラベル付け」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
バケット化とは
バケット化とは、元の値を名前付きのカテゴリに分類することです。数値、日付、コードを人が読みやすいラベルに変換します。
スコア87をそのまま表示する代わりに、"良好"と表示します。年齢14歳をそのまま表示する代わりに、"10代"と表示します。このための主なツールがCASE式です。
サンプルテーブル:Orders
このレッスンでは、ordersテーブルを使用します。各行には注文金額とステータスコードが含まれています。
次のクエリを実行して、使用するデータを確認してください。
SELECT id, customer, amount, status
FROM orders
ORDER BY id;CASE WHENでラベルを付ける
最も単純なバケット化のパターンは、条件を確認してラベルを割り当てる方法です。CASE WHEN ... THEN ... ELSE ... ENDブロックは、各行に対して新しい文字列を返します。
ここでは、金額に基づいてすべての注文を'大'または'小'としてラベル付けしています。
SELECT id,
amount,
CASE
WHEN amount >= 500 THEN 'Large'
ELSE 'Small'
END AS order_size
FROM orders;WHENの連鎖で複数のバケットを作る
必要な数だけWHEN句を追加できます。SQLは上から下へ確認し、最初に一致したところで停止します。
この例では、金額を小、中、大の3段階に分けています。
SELECT id,
amount,
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;テキスト値をバケット化する
バケットは数値だけに使うものではありません。完全に一致するテキスト値を照合し、よりわかりやすいラベルに置き換えることもできます。
ここでは、元のステータスコード'P'、'S'、'C'を、読みやすい言葉に変換しています。
SELECT id,
status,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;Simple CASE形式を使用する
1つの列を複数の固定値と比較する場合、simple CASE形式(CASE column WHEN value ...)を使うと、各WHEN句で列名を繰り返すよりも短く、読みやすくなります。
結果はSearched CASE形式と同じです。
SELECT id,
CASE status
WHEN 'P' THEN 'Pending'
WHEN 'S' THEN 'Shipped'
WHEN 'C' THEN 'Cancelled'
ELSE 'Unknown'
END AS status_label
FROM orders;GROUP BY内でバケット化する
バケットラベルを作成したら、それを使ってグループ化し、各カテゴリに該当する行数を数えられます。CASE式全体をGROUP BYの内部に記述します。
このクエリでは、注文が小、中、大のそれぞれ何件あるかを示します。
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier,
COUNT(*) AS total_orders
FROM orders
GROUP BY
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END;サブクエリの別名でバケット化する
長いCASEブロックをGROUP BYで繰り返すのは冗長です。よりすっきりした方法は、メインクエリをサブクエリ(またはCTE)で囲み、別名を直接参照できるようにすることです。
SELECT order_tier, COUNT(*) AS total_orders
FROM (
SELECT
CASE
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders
) AS bucketed
GROUP BY order_tier;数値バケット:年齢グループ
年齢によるグループ化は、バケット化の典型的な使用例です。次のクエリでは、すべての顧客を名前付きの年齢層に分類します。
条件が小さい値から大きい値の順に並んでいる点に注意してください。SQLは真となる最初のWHENで停止するため、順序が重要です。
SELECT name,
age,
CASE
WHEN age < 13 THEN 'Child'
WHEN age < 18 THEN 'Teen'
WHEN age < 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM customers;バケット内のNULLにラベルを付ける
値がNULLの場合、IS NULL以外のWHEN条件では一致しません。明示的な確認がなければ、NULLはELSE分岐に進みます。
WHEN column IS NULL句を追加して、NULLに独自のラベルを付けてください。
SELECT id,
amount,
CASE
WHEN amount IS NULL THEN 'No Data'
WHEN amount < 100 THEN 'Small'
WHEN amount < 500 THEN 'Medium'
ELSE 'Large'
END AS order_tier
FROM orders;ORDER BYでバケット化する
CASE式をORDER BYの内部に直接記述して、新しい列を追加せずに並べ替えの優先順位を制御することもできます。
次の例では、常にPendingの注文を最初に表示し、次にShipped、最後にCancelledを表示します。
SELECT id, customer, status
FROM orders
ORDER BY
CASE status
WHEN 'P' THEN 1
WHEN 'S' THEN 2
WHEN 'C' THEN 3
ELSE 4
END;理解度チェック
CASEを使ったデータのバケット化とラベル付けについての理解度を確認しましょう。
レッスンの復習
よくできました!データのバケット化とラベル付けについて学んだことを振り返りましょう。
- バケット化では、
CASE WHENを使って元の値を名前付きのカテゴリに変換します。 WHEN句を連鎖させると複数のバケットを作成でき、SQLは最初に一致したところで停止します。- Simple CASE形式(
CASE col WHEN val)は、1つの列を固定値と比較する場合に適しています。 CASE式をGROUP BYで使用して、各バケットの行数を数えられます。- NULLに意味のあるラベルを付けるため、
WHEN col IS NULLで必ず明示的に処理してください。 CASEはORDER BYの内部でも使用でき、独自の並べ替え優先順位を定義できます。
バケット化によって、元のコードや数値をわかりやすく説明的なラベルに置き換えられるため、レポートが大幅に読みやすくなります。
よくある質問
「データの分類とラベル付け」レッスンは無料ですか?
はい。「データの分類とラベル付け」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「データの分類とラベル付け」で何を学びますか?
値をカテゴリに変換します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「データの分類とラベル付け」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CASE式
- 検索CASEと単純CASE
- データの分類とラベル付け
- ORDER BYと集約でCASEを使う