Browse Source

made the remaining exercises

master
Bram Dieudonne 2 years ago
parent
commit
b61e3ed0fb

+ 62
- 0
How-to-code-subqueries.sql View File

@@ -1,19 +1,81 @@
-- Exercise 1

SELECT category_name
FROM categories
WHERE category_id IN
(SELECT DISTINCT category_id FROM products)
ORDER BY category_name;

-- Exercise 2

SELECT
product_name,
list_price
FROM products
WHERE list_price >
(SELECT AVG(list_price)
FROM products)
ORDER BY list_price DESC;

-- Exercise 3

SELECT category_name
FROM categories
WHERE NOT EXISTS
(SELECT *
FROM products
WHERE category_id = categories.category_id);

-- Exercise 4

SELECT
email_address,
i.order_id,
SUM((i.item_price - i.discount_amount) * quantity) AS 'order_total'
FROM customers c JOIN orders o
ON c.customer_id = o.customer_id
JOIN order_items i
ON o.order_id = i.order_id
GROUP BY email_address, order_id;

-- Exercise 4 Part 2

SELECT
email_address,
MAX(order_total)
FROM
(SELECT email_address,
i.order_id,
SUM((i.item_price - i.discount_amount) * quantity) AS 'order_total'
FROM customers c JOIN orders o
ON c.customer_id = o.customer_id
JOIN order_items i
ON o.order_id = i.order_id
GROUP BY email_address, order_id) f
GROUP BY email_address;

-- 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);

+ 62
- 0
How-to-code-summary-queries.sql View File

@@ -1,19 +1,81 @@
-- Exercise 1

SELECT
COUNT(order_id),
SUM(tax_amount)
FROM orders;

-- Exercise 2

SELECT
category_name,
COUNT(product_id) AS count,
MAX(list_price) AS max_price
FROM categories c JOIN products p
ON c.category_id = p.category_id
GROUP BY category_name
ORDER BY category_name DESC;

-- Exercise 3

SELECT
c.email_address,
SUM(item_price) * quantity,
SUM(discount_amount) * quantity
FROM orders o JOIN order_items i
ON o.order_id = i.order_id
JOIN customers c
ON o.customer_id = c.customer_id
GROUP BY c.customer_id
ORDER BY item_price DESC;

-- Exercise 4

SELECT
c.email_address,
COUNT(i.order_id),
SUM(item_price - discount_amount) * quantity AS 'total_amount'
FROM orders o JOIN order_items i
ON i.order_id = o.order_id
JOIN customers c
ON o.customer_id = c.customer_id
GROUP BY email_address
HAVING COUNT(i.order_id) > 1
ORDER BY SUM(item_price - discount_amount) * COUNT(i.order_id) DESC;

-- Exercise 5

SELECT
c.email_address,
COUNT(i.order_id),
SUM(item_price - discount_amount) * quantity AS 'total_amount'
FROM orders o JOIN order_items i
ON i.order_id = o.order_id
JOIN customers c
ON o.customer_id = c.customer_id
WHERE i.item_price > 400
GROUP BY email_address
HAVING COUNT(i.order_id) > 1
ORDER BY SUM(item_price - discount_amount) * COUNT(i.order_id) DESC;

-- Exercise 6

SELECT
product_name,
SUM(item_price - discount_amount) * quantity AS 'total_amount'
FROM products p JOIN order_items i
ON p.product_id = i.product_id
GROUP BY product_name WITH ROLLUP;

-- Exercise 7

SELECT
email_address,
COUNT(product_id) AS 'distinct_products'
FROM customers c JOIN orders o
ON c.customer_id = o.customer_id
JOIN order_items i
ON o.order_id = i.order_id
GROUP BY email_address
HAVING COUNT(o.order_id) > 1;


+ 24
- 1
How-to-insert-update-and-delete-data.sql View File

@@ -1,30 +1,53 @@
-- Exercise 1

INSERT INTO categories
VALUES (default, 'Brass');

-- Exercise 2

UPDATE categories
SET category_name = 'Woodwinds'
WHERE category_id = 5;

-- Exercise 3

DELETE FROM categories
WHERE category_id = 5;

-- 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 = 4;
DELETE FROM products
WHERE product_id = 11;

-- 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



+ 51
- 7
How-to-retrieve-data-from-a-single-table.sql View File

@@ -1,22 +1,65 @@
-- Exercise 1

SELECT
product_code,
product_name,
list_price,
discount_percent
FROM products
ORDER BY list_price;

-- 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, 2) AS discount_amount,
round(list_price - list_price * discount_percent/100, 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-%b-%Y') AS today_formatted;


-- Exercise 8
SELECT 100 AS price,
0.07 AS tax_rate,
100 * 0.07 AS tax_amount,
100 + (100 * 0.07) AS total;

+ 59
- 5
How-to-retrieve-data-from-two-or-more-tables.sql View File

@@ -1,19 +1,73 @@
-- Exercise 1
SELECT
category_name,
product_name,
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 email_address LIKE '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
WHERE c.shipping_address_id = a.address_id;

-- Exercise 4

SELECT
last_name,
first_name,
order_date,
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 oi.order_id = o.order_id
JOIN products p
ON p.product_id = oi.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.list_price = p2.list_price
AND p1.product_id <> p2.product_id;

-- Exercise 6

SELECT *
FROM categories c JOIN products p
ON p.category_id = c.category_id
WHERE p.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' AS ship_status, order_id, order_date
FROM orders
WHERE ship_date IS NULL
ORDER BY order_date;

Loading…
Cancel
Save