因为疫情,有两周居家学习的时间。根据导师布置的任务,将第二周的作业提交到这里。
SQL必知必会(第5版)学习笔记
- 学习目标:
- 学习内容:
- 学习时间:
- 学习产出:
-
- 1. 思维导图制作:
- 2. 9-17章挑战题
-
- 第九章挑战题
- 第十章挑战题
- 第十一章挑战题
- 第十二章挑战题
- 第十三章挑战题
- 第十四章挑战题
- 第十五章挑战题
- 第十六章挑战题
- 第十七章挑战题
学习目标:
9-17章语法学习,熟悉SQL的基本操作,并提交课后题答案。学习内容:
《SQL必知必会(第5版)》 9-17章语法学习学习时间:
8月16日---8月20日学习产出:
1. 思维导图制作:
利用幕布总结了9-17章的思维导图。
整个2-17章思维导图链接如下
/doc/t299IgeyFH
2. 9-17章挑战题
第九章挑战题
1.编写SQL语句,确定已售出产品的总数(使用OrderItems中的quantity列)。
2.修改刚刚创建的语句,确定已售出产品项(prod_item)BR01的总数。
3.编写SQL语句,确定Products表中价格不超过10美元的最贵产品的价格(prod_price)。将计算所得的字段命名为max_price。
--1.编写SQL语句,确定已售出产品的总数(使用OrderItems中的quantity列)。
SELECT SUM(quantity) AS items_ordered
FROM OrderItems;
--2.修改刚刚创建的语句,确定已售出产品项(prod_item)BR01的总数。
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE prod_id = 'BR01';
--3.编写SQL语句,确定Products表中价格不超过10美元的最贵产品的价格(prod_price)。将计算所得的字段命名为max_price。
SELECT MAX(prod_price) AS max_price
FROM Products
WHERE prod_price <= 10;
第十章挑战题
1.OrderItems表包含每个订单的每个产品。编写SQL语句,返回每个订单号(order_num)各有多少行数(order_lines),并按order_lines对结果进行排序。
2.编写SQL语句,返回名为cheapest_item的字段,该字段包含每个供应商成本最低的产品(使用Products表中的prod_price),然后从最低成本到最高成本对结果进行排序。
3.确定最佳顾客非常重要,请编写SQL语句,返回至少含100项的所有订单的订单号(OrderItems表中的order_num)。
4.确定最佳顾客的另一种方式是看他们花了多少钱。编写SQL语句,返回总价至少为1000的所有订单的订单号(OrderItems表中的order_num)。提示:需要计算总和(item_price乘以quantity)。按订单号对结果进行排序。
5.下面的SQL语句有问题吗?(尝试在不运行的情况下指出。)
SELECT order num, COUNT ( * ) AS items FROM OrderItems GROUP BY items HAVING COUNT (*) >=3 ORDER BY items, order_num;
--1.OrderItems表包含每个订单的每个产品。编写SQL语句,返回每个订单号(order_num)各有多少行数(order_lines),并按order_lines对结果进行排序。
SELECT order_num,
COUNT(*) as order_lines
FROM OrderItems
GROUP BY order_num
ORDER BY order_lines;
--2.编写SQL语句,返回名为cheapest_item的字段,该字段包含每个供应商成本最低的产品(使用Products表中的prod_price),然后从最低成本到最高成本对结果进行排序。
SELECT vend_id,
MIN(prod_price) AS cheapest_item
FROM Products
GROUP BY vend_id
ORDER BY cheapest_item;
--3.确定最佳顾客非常重要,请编写SQL语句,返回至少含100项的所有订单的订单号(OrderItems表中的order_num)。
SELECT order_num
FROM OrderItems
GROUP BY order_num
HAVING SUM(quantity) >= 100
ORDER BY order_num;
--4.确定最佳顾客的另一种方式是看他们花了多少钱。编写SQL语句,返回总价至少为1000的所有订单的订单号(OrderItems表中的order_num)。提示:需要计算总和(item_price乘以quantity)。按订单号对结果进行排序。
SELECT order_num,
SUM(item_price*quantity) AS total_price
FROM OrderItems
GROUP BY order_num
HAVING SUM(item_price*quantity) >= 1000
ORDER BY order_num;
--5.下面的SQL语句有问题吗?
--GROUP BY 项不正确。GROUP BY 必须是一个实际的列,而不是用来执行聚合计算的列。GROUP BY order_num 将被允许。
SELECT order_num,
COUNT(*) AS items
FROM OrderItems
GROUP BY items
HAVING COUNT(*) >= 3
ORDER BY order_num;
第十一章挑战题
1.使用子查询,返回购买价格为10美元或以上产品的顾客列表。你需要使用OrderItems表查找匹配的订单号(order_num),然后使用Order表检索这些匹配订单的顾客ID(cust_id)。
2.你想知道订购BR01产品的日期。编写SQL语句,使用子查询来确定哪些订单(在OrderItems中)购买了prod_id为BR01的产品,然后从Orders表中返回每个产品对应的顾客ID(cust_id)和订单日期(order_date) 。 按订购日期对结果进行排序。
3.