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.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. -- Exercise 1
  2. SELECT category_name
  3. FROM categories
  4. WHERE category_id IN
  5. (SELECT DISTINCT category_id FROM products)
  6. ORDER BY category_name;
  7. -- Exercise 2
  8. SELECT
  9. product_name,
  10. list_price
  11. FROM products
  12. WHERE list_price >
  13. (SELECT AVG(list_price)
  14. FROM products)
  15. ORDER BY list_price DESC;
  16. -- Exercise 3
  17. SELECT category_name
  18. FROM categories
  19. WHERE NOT EXISTS
  20. (SELECT *
  21. FROM products
  22. WHERE category_id = categories.category_id);
  23. -- Exercise 4
  24. SELECT
  25. email_address,
  26. i.order_id,
  27. SUM((i.item_price - i.discount_amount) * quantity) AS 'order_total'
  28. FROM customers c JOIN orders o
  29. ON c.customer_id = o.customer_id
  30. JOIN order_items i
  31. ON o.order_id = i.order_id
  32. GROUP BY email_address, order_id;
  33. -- Exercise 4 Part 2
  34. SELECT
  35. email_address,
  36. MAX(order_total)
  37. FROM
  38. (SELECT email_address,
  39. i.order_id,
  40. SUM((i.item_price - i.discount_amount) * quantity) AS 'order_total'
  41. FROM customers c JOIN orders o
  42. ON c.customer_id = o.customer_id
  43. JOIN order_items i
  44. ON o.order_id = i.order_id
  45. GROUP BY email_address, order_id) f
  46. GROUP BY email_address;
  47. -- Exercise 5
  48. SELECT
  49. product_name,
  50. discount_percent
  51. FROM products
  52. WHERE discount_percent NOT IN
  53. (SELECT discount_percent
  54. FROM products
  55. GROUP BY discount_percent
  56. HAVING COUNT(discount_percent) > 1)
  57. ORDER BY product_name;
  58. -- Exercise 6
  59. SELECT
  60. email_address,
  61. order_id,
  62. order_date
  63. FROM customers c JOIN orders o
  64. ON c.customer_id = o.customer_id
  65. WHERE order_date =
  66. (SELECT MIN(order_date)
  67. FROM orders
  68. WHERE customer_id = o.customer_id);