PostgreSQLのSelect文の操作を学ぶための問題を10問作成しました。
よかったら挑戦してみてください!サンプルデータもちゃんと用意してます!
目次
前提となるサンプルデータはこちら
employeesテーブル
+----+------------+-----------+-------+
| id | first_name | last_name | salary |
+----+------------+-----------+-------+
| 1 | John | Doe | 5000 |
| 2 | Jane | Smith | 6000 |
| 3 | Michael | Johnson | 4500 |
| 4 | Robert | Williams | 6500 |
| 5 | Maria | Jones | 3500 |
+----+------------+-----------+-------+
customersテーブル
+----+-------+---------+
| id | name | city |
+----+-------+---------+
| 1 | Alice | New York |
| 2 | Bob | London |
| 3 | Eve | Paris |
| 4 | Eve | New York |
+----+-------+---------+
ordersテーブル
+----+-------------+-------------+
| id | customer_id | total_price |
+----+-------------+-------------+
| 1 | 1 | 100.00|
| 2 | 2 | 200.00|
| 3 | 3 | 300.00|
| 4 | 4 | 400.00|
| 5 | 1 | 500.00|
+----+-------------+-------------+
productsテーブル
+----+---------+---------+-------+
| id | name | category | price |
+----+---------+---------+-------+
| 1 | Shirt | Clothes | 20.00|
| 2 | Jeans | Clothes | 30.00|
| 3 | Jacket | Clothes | 40.00|
| 4 | T-Shirt | Clothes | 10.00|
+----+---------+---------+-------+
上記データを踏まえたSQL練習問題 10問
以下にSQLの練習問題を5問用意します。
- customersテーブルから、cityが’New York’である顧客のidとnameを選択し、nameの降順で並べ替えるSQL文を作成してください
- ordersテーブルから、customer_idが2のすべての注文のidとtotal_priceを選択し、total_priceの昇順で並べ替えるSQL文を作成してください
- productsテーブルから、categoryが’Clothes’である商品のうち、priceが最も安いもののidとnameを選択するSQL文を作成してください
- ordersテーブルから、 total_priceが平均値以上のすべての注文のid、customer_id、total_priceを選択し、total_priceの降順で並べ替えるSQL文を作成してください
- productsテーブルから、categoryが’Clothes’である商品のうち、priceが最も高いもののname、category、priceを選択し、nameの昇順で並べ替えるSQL文を作成してください
- employeesテーブルから、salaryが平均値以上のすべての従業員のfirst_name、last_name、salaryを選択し、last_nameの昇順、salaryの降順で並べ替えるSQL文を作成してください
- customersテーブルから、cityが’New York’ または ‘Paris’である顧客のid, name, cityを選択し、cityの昇順、nameの降順で並べ替えるSQL文を作成してください
- productsテーブルから、priceが30以上である商品のうち、nameに’Shirt’を含むもののname、category、priceを選択し、priceの昇順で並べ替えるSQL文を作成してください
- ordersテーブルから、customer_idが1または3のすべての注文のid、customer_id、total_priceを選択し、customer_idの昇順、total_priceの降順で並べ替えるSQL文を作成してください
- employeesテーブルから、last_nameが’Doe’または’Jones’であるすべての従業員のid、first_name、last_nameを選択し、last_nameの降順、first_nameの昇順で並べ替えるSQL文を作成してください
1問目の答え
SELECT id,name FROM customers
WHERE city = 'New York'
ORDER BY name DESC;
2問目の答え
SELECT id,total_price FROM orders
WHERE customer_id = 2
ORDER BY total_price ASC;
3問目の答え
SELECT id,name FROM products
WHERE category = 'Clothes'
ORDER BY price ASC
LIMIT 1;
4問目の答え
SELECT id,customer_id,total_price FROM orders
WHERE total_price >= (SELECT AVG(total_price) FROM orders)
ORDER BY total_price DESC;
5問目の答え
SELECT name,category,price FROM products
WHERE category = 'Clothes'
ORDER BY price DESC, name ASC
LIMIT 1;
6問目の答え
SELECT first_name, last_name, salary FROM employees
WHERE salary >= (SELECT AVG(salary) FROM employees)
ORDER BY last_name ASC, salary DESC;
7問目の答え
SELECT id,name,city FROM customers
WHERE city = 'New York' OR city = 'Paris'
ORDER BY city ASC,name DESC;
8問目の答え
SELECT name,category,price FROM products
WHERE price >= 30 and name like '%Shirt%'
ORDER BY price ASC;
9問目の答え
SELECT id,customer_id,total_price FROM orders
WHERE customer_id = 1 or customer_id = 3
ORDER BY customer_id ASC, total_price DESC;
10問目の答え
SELECT id,first_name,last_name FROM employees
WHERE last_name = 'Doe' OR last_name = 'Jones'
ORDER BY last_name DESC,first_name ASC;