@@ -1,19 +1,71 @@ | |||
-- Exercise 1 | |||
SELECT * FROM products | |||
WHERE list_price > (SELECT AVG(list_price) FROM products); | |||
-- Exercise 2 | |||
SELECT | |||
product_name, | |||
list_price | |||
FROM | |||
products | |||
WHERE | |||
list_price > | |||
(SELECT | |||
AVG(list_price) | |||
FROM products | |||
WHERE list_price > 0) | |||
ORDER BY list_price DESC; | |||
-- Exercise 3 | |||
SELECT | |||
c.category_name | |||
FROM | |||
categories c | |||
WHERE | |||
NOT EXISTS (SELECT 1 FROM products p WHERE p.category_id = c.category_id); | |||
-- Exercise 4 | |||
SELECT c.email_address, | |||
Max(order_cost) AS LargestOrder | |||
FROM customers c | |||
INNER JOIN orders o | |||
ON c.customer_id = o.customer_id | |||
JOIN (SELECT orders.order_id, | |||
item_total * quantity AS OrderCost | |||
FROM orders, | |||
order_items | |||
WHERE order_items.order_id = orders.order_id)largest | |||
ON largest.order_id = o.order_id | |||
GROUP BY c.email_address; | |||
-- Exercise 4 Part 2 | |||
-- Exercise 5 | |||
SELECT | |||
product_name, discount_percent | |||
FROM | |||
products | |||
WHERE | |||
discount_percent NOT IN (SELECT | |||
discount_percent | |||
FROM | |||
products | |||
GROUP BY discount_percent | |||
HAVING COUNT(discount_percent) > 1) | |||
ORDER BY product_name; | |||
-- Exercise 6 | |||
SELECT | |||
email_address, order_id, | |||
order_date | |||
FROM | |||
customers c JOIN orders o | |||
ON c.customer_id = o.customer_id | |||
WHERE | |||
order_date = (SELECT | |||
MIN(order_date) | |||
FROM | |||
orders | |||
WHERE | |||
customer_id = o.customer_id); |
@@ -1,19 +1,98 @@ | |||
-- Exercise 1 | |||
SELECT | |||
COUNT(*) AS order_count, | |||
SUM(tax_amount) | |||
FROM | |||
orders; | |||
-- Exercise 2 | |||
SELECT | |||
category_name, | |||
COUNT(product_id) AS product_count, | |||
MAX(list_price) AS max_price | |||
FROM | |||
categories c JOIN products p | |||
ON c.category_id = p.category_id | |||
GROUP BY | |||
c.category_id | |||
ORDER BY | |||
product_count DESC; | |||
-- Exercise 3 | |||
SELECT | |||
email_address, | |||
SUM(item_price * quantity) AS 'total', | |||
SUM(discount_amount * quantity) AS 'total discount' | |||
FROM | |||
customers c | |||
JOIN orders o | |||
ON c.customer_id = o.customer_id | |||
JOIN order_items oi | |||
ON o.order_id = oi.order_id | |||
GROUP BY | |||
email_address | |||
ORDER BY | |||
total DESC; | |||
-- Exercise 4 | |||
SELECT | |||
email_address, | |||
COUNT(o.order_id) AS number_orders, | |||
(item_price - discount_amount) * quantity AS total_amount | |||
FROM | |||
customers c JOIN orders o | |||
ON c.customer_id = o.customer_id | |||
JOIN order_items oi | |||
ON o.order_id = oi.order_id | |||
GROUP BY | |||
c.customer_id | |||
HAVING | |||
number_orders > 1 | |||
ORDER BY | |||
total_amount DESC; | |||
-- Exercise 5 | |||
SELECT | |||
email_address, | |||
COUNT(o.order_id) AS number_orders, | |||
(item_price - discount_amount) * quantity AS total_amount | |||
FROM | |||
customers c JOIN orders o | |||
ON c.customer_id = o.customer_id | |||
JOIN order_items oi | |||
ON o.order_id = oi.order_id | |||
WHERE | |||
item_price > 400 | |||
GROUP BY | |||
email_address | |||
HAVING | |||
COUNT(o.order_id) > 1 | |||
ORDER BY | |||
total_amount DESC; | |||
-- Exercise 6 | |||
SELECT | |||
product_name, | |||
SUM((item_price - discount_amount) * quantity) AS 'product total' | |||
FROM | |||
products p JOIN order_items oi | |||
ON p.product_id = oi.product_id | |||
GROUP BY | |||
product_name WITH ROLLUP; | |||
-- Exercise 7 | |||
SELECT | |||
email_address, | |||
COUNT(DISTINCT oi.product_id) AS 'number of products' | |||
FROM | |||
customers c | |||
JOIN orders o | |||
ON c.customer_id = o.customer_id | |||
JOIN order_items oi | |||
ON o.order_id = oi.order_id | |||
GROUP BY | |||
email_address | |||
HAVING | |||
COUNT(DISTINCT oi.product_id) > 1 | |||
ORDER BY | |||
email_address; |
@@ -1,28 +1,66 @@ | |||
-- Exercise 1 | |||
INSERT INTO | |||
categories | |||
(category_id, category_name) | |||
VALUES | |||
(default, 'Brass'); | |||
-- Exercise 2 | |||
UPDATE | |||
categories | |||
SET | |||
category_name = 'Woodwinds' | |||
WHERE | |||
category_id = (select category_id from categories where category_name='Brass'); | |||
-- Exercise 3 | |||
DELETE FROM categories | |||
WHERE | |||
category_id = (select category_id from categories where category_name='Woodwinds'); | |||
-- Exercise 4 | |||
INSERT INTO products | |||
(product_id, category_id, product_code, product_name, description, | |||
list_price, discount_percent, date_added) | |||
values | |||
(default, 4, 'dgx_640', 'Yamaha DGX 640 88-Key Digital Piano', 'Long description to come', | |||
'799.99', '0', NOW()); | |||
-- Exercise 5 | |||
UPDATE | |||
products | |||
SET | |||
discount_percent = '35' | |||
WHERE | |||
product_id = 11; | |||
-- Exercise 6 | |||
DELETE FROM | |||
categories | |||
WHERE | |||
category_id = (select category_id from categories where category_name='Brass'); | |||
-- Exercise 7 | |||
insert into customers | |||
(email_address, password, first_name, last_name) | |||
values | |||
('rick@raven.com ', '','Rick','Raven'); | |||
-- Exercise 8 | |||
UPDATE | |||
customers | |||
SET | |||
password = 'secret' | |||
WHERE | |||
email_address = 'rick@raven.com'; | |||
-- Exercise 9 | |||
UPDATE | |||
customers | |||
SET | |||
password = 'reset' | |||
LIMIT 100; | |||
-- Exercise 10 |
@@ -1,22 +1,79 @@ | |||
-- Exercise 1 | |||
SELECT | |||
product_code, product_name, list_price, discount_percent | |||
FROM | |||
products | |||
ORDER BY | |||
list_price DESC; | |||
-- Exercise 2 | |||
SELECT | |||
concat(last_name, ', ', first_name) AS full_name | |||
FROM | |||
customers | |||
WHERE | |||
last_name >= 'M' | |||
ORDER BY | |||
last_name ASC; | |||
-- Exercise 3 | |||
SELECT | |||
product_name, list_price, date_added | |||
FROM | |||
products | |||
WHERE | |||
list_price > 500 AND list_price < 2000; | |||
ORDER BY | |||
date_added DESC; | |||
-- Exercise 4 | |||
SELECT | |||
product_name, | |||
list_price, | |||
discount_percent, | |||
ROUND(list_price * discount_percent / 100) AS discount_amount, | |||
ROUND(list_price - (list_price * discount_percent), 2) AS discount_price | |||
FROM | |||
products | |||
ORDER BY | |||
discount_price DESC | |||
LIMIT | |||
5; | |||
-- Exercise 5 | |||
SELECT | |||
item_id, | |||
item_price, | |||
discount_amount, | |||
quantity, | |||
item_price * quantity AS price_total, | |||
discount_amount * quantity AS discount_total, | |||
(item_price - discount_amount) * quantity AS item_total | |||
FROM | |||
order_items | |||
WHERE | |||
(item_price - discount_amount) * quantity >= 500 | |||
ORDER BY | |||
item_total DESC; | |||
-- Exercise 6 | |||
SELECT | |||
order_id, | |||
order_date, | |||
ship_date | |||
FROM | |||
orders | |||
WHERE | |||
ship_date IS NULL; | |||
-- Exercise 7 | |||
SELECT | |||
NOW() AS today_unformatted, | |||
DATE_FORMAT(NOW(), "%d-%m-%Y") AS today_formatted; | |||
-- Exercise 8 | |||
SELECT | |||
'100' AS 'price', | |||
'0.07' AS 'tax_rate', | |||
100 * .07 AS tax_amount, | |||
100 + (100 * .07) AS total; |
@@ -1,19 +1,97 @@ | |||
-- Exercise 1 | |||
SELECT | |||
c.category_name, | |||
p.product_name, | |||
p.list_price | |||
FROM | |||
categories c JOIN products p | |||
ON c.category_id = p.category_id | |||
ORDER BY | |||
category_name, product_name ASC; | |||
-- Exercise 2 | |||
SELECT | |||
first_name, | |||
last_name, | |||
line1, | |||
city, | |||
state, | |||
zip_code | |||
FROM | |||
customers c JOIN addresses a | |||
ON c.customer_id = a.customer_id | |||
WHERE | |||
c.email_address = 'allan.sherwood@yahoo.com'; | |||
-- Exercise 3 | |||
SELECT | |||
first_name, | |||
last_name, | |||
line1, | |||
city, | |||
state, | |||
zip_code | |||
FROM | |||
customers c JOIN addresses a | |||
ON c.customer_id = a.customer_id | |||
AND c.shipping_address_id = a.address_id; | |||
-- Exercise 4 | |||
SELECT | |||
c.last_name, | |||
c.first_name, | |||
order_date, | |||
p.product_name, | |||
item_price, | |||
discount_amount, | |||
quantity | |||
FROM | |||
Customers c | |||
JOIN orders o ON c.customer_id = o.customer_id | |||
JOIN order_items oi ON o.order_id = oi.order_id | |||
JOIN products p ON oi.product_id = p.product_id | |||
ORDER BY | |||
last_name, order_date, product_name; | |||
-- Exercise 5 | |||
SELECT | |||
p1.product_name, | |||
p1.list_price | |||
FROM | |||
products p1 JOIN products p2 | |||
ON p1.product_id <> p2.product_id AND | |||
p1.list_price = p2.list_price | |||
ORDER BY | |||
product_name; | |||
-- Exercise 6 | |||
SELECT | |||
category_name, | |||
product_id | |||
FROM | |||
categories c LEFT JOIN products p | |||
ON c.category_id = p.category_id | |||
WHERE | |||
product_id IS NULL; | |||
-- Exercise 7 | |||
SELECT | |||
'SHIPPED' AS ship_status, | |||
order_id, | |||
order_date | |||
FROM | |||
orders | |||
WHERE | |||
ship_date IS NOT NULL | |||
UNION | |||
SELECT | |||
'NOT SHIPPED', | |||
order_id, | |||
order_date | |||
FROM | |||
orders | |||
WHERE | |||
ship_date IS NULL | |||
ORDER BY | |||
order_date; |