You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

How-to-code-subqueries.sql 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. -- Exercise 1
  2. SELECT DISTINCT category_name
  3. FROM categories
  4. WHERE category_id
  5. IN (select product_id FROM products)
  6. ORDER BY category_name
  7. LIMIT 3;
  8. -- Exercise 2
  9. SELECT product_name, list_price
  10. FROM products
  11. GROUP BY product_name
  12. HAVING AVG(list_price) > (SELECT AVG(list_price) FROM products)
  13. ORDER BY list_price DESC;
  14. -- Exercise 3
  15. SELECT category_name
  16. FROM categories c
  17. WHERE NOT exists
  18. (SELECT category_name, category_id
  19. FROM products p
  20. WHERE c.category_id= p.category_id);
  21. -- Exercise 4
  22. SELECT email_address, os.order_id, SUM(item_price - discount_amount) * quantity AS 'order_total'
  23. FROM customers c
  24. JOIN orders os
  25. USING (customer_id)
  26. JOIN order_items oi
  27. USING (order_id)
  28. GROUP BY email_address, os.order_id;
  29. -- Exercise 4 Part 2
  30. SELECT
  31. email_address,
  32. MAX(order_total)
  33. FROM (SELECT email_address, i.order_id, SUM((i.item_price - i.discount_amount) * quantity) AS 'order_total'
  34. FROM customers c JOIN orders o
  35. ON c.customer_id = o.customer_id
  36. JOIN order_items i
  37. ON o.order_id = i.order_id
  38. GROUP BY email_address, order_id) f
  39. GROUP BY email_address;
  40. -- Exercise 5
  41. SELECT p1.product_name, p1.discount_percent
  42. FROM products p1
  43. WHERE p1.discount_percent NOT IN
  44. (SELECT p2.discount_Percent
  45. FROM Products p2
  46. WHERE p1.product_name <> p2.product_name)
  47. ORDER BY product_name;
  48. -- Exercise 6
  49. SELECT email_address, order_id, order_date
  50. FROM customers c
  51. JOIN orders o
  52. ON c.customer_id = o.customer_id
  53. WHERE order_date = (SELECT MIN(order_date)
  54. FROM orders
  55. WHERE customer_id = o.customer_id);