新入社員の練習課題にSQL問題集を探していたところ、英語ですが100問を公開しているサイトがありましたのでご紹介。
AdventureWorks: SQL Exercises, Practice, Solution
https://www.w3resource.com/sql-exercises/adventureworks/adventureworks-exercises.php
前提としてSQLServerとサンプルデータAdverntureWorksが必要です。
AdventureWorks サンプル データベース
https://learn.microsoft.com/ja-jp/sql/samples/adventureworks-install-configure?view=sql-server-ver16&tabs=ssms
ぎりぎり理解できそうな和訳(1~10):
1. 次のテーブルから、すべての行と列を取得する SQL クエリを作成しなさい。jobtitleを昇順にしてソートします。
テーブル HumanResources.Employee
2. 次のテーブルから、テーブルエイリアスを使用して、すべての行と列を取得する SQL クエリを作成しなさい。姓を昇順にしてソートします。
テーブル Person.Person
3. 次のテーブルから、すべての行と列のサブセット(FirstName、LastName、businessentityid)を返す SQL クエリを作成しなさい。3番目の列の見出しはEmployee_idに名前を変更します。姓を昇順にしてソートします。
テーブル Person.Person
4. 次のテーブルから、sellstartdate が NULL 以外であり、かつ productline が 'T' である商品の行を返す SQL クエリを作成しなさい。カラムは productid、productnumber、name を出力、名前を昇順にしてソートします。
テーブル: production.Product
5. 次のテーブルから、すべての行を返し、小計に対する税率を計算する SQL クエリを作成しなさい。カラムは salesorderid、customerid、orderdate、subtotal、percentage of tax(=小計に対する税率)を出力、小計を昇順にしてソートします。
テーブル: sales.salesorderheader
6. 次のテーブルから、jobtitle のリストを作成する SQL クエリを作成しなさい。カラムは jobtitle を出力、jobtitle を昇順にしてソートします。
テーブル HumanResources.Employee
7. 次のテーブルから、各顧客が支払った運賃の合計を計算するクエリを SQL で作成しなさい。カラムは customerid と合計運賃を出力、customerid を昇順にしてソートします。
テーブル: sales.salesorderheader
8. 以下の表から、顧客ごとの subtotalの 平均と合計を求める SQL クエリを作成しなさい。customerid, salespersonid, subtotalの 平均と合計 を返します。customerid と salespersonid で結果をグループ化し、customerid を降順にしてソートします。
テーブル: sales.salesorderheader
9. 次のテーブルから、'A'、'C'、'H'の棚にある各商品 ID ごとの合計数量を取得する SQL クエリを作成しなさい。数量の合計が 500 以上の結果のみを出力します。カラムは productidと数量の合計を出力、productid を昇順にしてソートします。
テーブル: production.productinventory
10. 次のテーブルから、10を掛けた locationid でグルーピングし、quantity を合計する SQL クエリを作成しなさい。
テーブル:production.productinventory