SQL必知必会(第5版)学习笔记(9-17)章

本文记录了学习SQL过程中,针对第9至17章的挑战题完成情况,包括思维导图制作和一系列涉及产品销售、订单统计、顾客行为分析的SQL题目解答,旨在提升SQL操作技能。
摘要由CSDN通过智能技术生成

因为疫情,有两周居家学习的时间。根据导师布置的任务,将第二周的作业提交到这里。

学习目标:

9-17章语法学习,熟悉SQL的基本操作,并提交课后题答案。

学习内容:

《SQL必知必会(第5版)》 9-17章语法学习

学习时间:

8月16日---8月20日

学习产出:

1. 思维导图制作:

利用幕布总结了9-17章的思维导图。
整个2-17章思维导图链接如下
https://www.mubucm.com/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.

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值