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

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