single
2つのテーブルのJOIN
メニューを表示するにはスワイプしてください
小規模なオンラインストアを運営する企業から注目を集めています。この企業には、互いに関連する2つのテーブルがあります。最初のテーブルには、オンラインストアで販売されている商品の情報が含まれています。
productテーブルの構造は以下の通りです:
2つ目のテーブルには、ウェブサイト上の商品カテゴリと、それぞれのカテゴリの簡単な説明が含まれています。
categoryテーブルの構造は以下の通りです:
最初の課題は、これら2つのテーブルを結合して、各カテゴリにいくつの商品があるかを調べることです。これを実現するために、JOIN文を使用します。
課題に取り組む前に、JOIN文とは何か、そしてその仕組みについて理解しましょう。
SQLにおけるJOINは、2つ以上のテーブル間で関連するカラムに基づいて行を結合する操作。JOINを使用することで、1つのクエリで複数のテーブルからデータを取得でき、関連データの分析や処理が容易になる。
2つのテーブルを結合するには、共通のカラムを持っている必要がある。ここでは、JOINテーブルとemployeesテーブルを使ってdepartmentの動作を確認する。共通のカラムはemployees.departmentとdepartments.name。
これらのテーブルのカラムを記述する際は、テーブル名、ドット、カラム名の順で指定する。特に同じ名前のカラムが複数のテーブルに存在する場合、コードの可読性が向上し、SQLにどのテーブルのどのカラムかを明確に伝えることができる。
各部門タイプ(tech/non-tech)ごとの従業員の合計給与を取得するタスク。
このタスクを達成するためのクエリは次のようになります。
1234SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
このクエリでJOINをどのように使用しているかを分解します。
SELECT部分では、両方のテーブルから取得したいカラムをリストし、明確にするためにテーブル名を付けています。JOIN部分では、結合するテーブルと、それらを結びつける共通カラムを指定します。ここではemployees.departmentとdepartment.nameです。- その後、
typeでグループ化し、SUM()関数を使って合計給与を計算します。
もし複雑に感じる場合は、JOINの簡単な構文を以下に示します。
SELECT table1.column, table2.column
FROM table1
JOIN table2 ON table1.common_column = table2.common_column
UNION句とは異なり、JOIN文は共通する列だけでなく、テーブル全体を結合可能。さらに、JOINではUNIONのようなサブクエリは不要。
スワイプしてコーディングを開始
2つのテーブル category と product を結合する必要があります。これら2つのテーブルの共通カラムは product.category_id と category.id です。
各カテゴリごとの商品の合計数量を求めてください。そのために、product.amount カラムの合計値を計算します。
このカラムにはエイリアス total_amount を付与してください。
クエリの最後で、total_amount カラムを昇順で並べ替えてください。
結果には2つのカラム、category.name と total.amount を含めてください。
簡単な手順
category.nameカラムと、product.amountテーブルのproductカラムの合計値を取得します。- 2番目のカラムにはエイリアス
total_amountを付与します。 category文を使ってJOINテーブルを結合します。- 共通カラム
product.category_id = category.idでテーブルを結合します。 - 結果を
category.nameでグループ化します。 total_amountで結果を並べ替えます。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください