【SQL自学打卡|DAY11】——苟日新,日日新,又日新

前言

❤欢迎大家到我的文章里呀❤
希望你们在我的文章当中能有所收获,非常感谢!!!

SLogan:利用有限的时间,撸起袖子加油干!

知识点回顾

where—过滤过滤指定的行
having–过滤分组,与group by连用

一、使用子查询在这里插入图片描述



【SQL91】返回购买价格为10美元或以上产品的顾客列表
在这里插入图片描述在这里插入图片描述

解题思路:
这是一道简单的子查询题目,需要注意的就是此类题目需要考虑到同一顾客可能会多次购买十美元及以上的商品,这样的话就需要用DISTINCT去重。本题没有这种情况。

还需要注意的是:子查询的格式。我好久没碰到都有点生疏了。
代码如下:

SELECT cust_id
FROM Orders
WHERE order_num IN ( 
    SELECT order_num
    FROM OrderItems    
    WHERE item_price>=10
)

结果:
在这里插入图片描述

【SQL92】确定哪些订单购买了 prod_id 为 BR01 的产品(一)
在这里插入图片描述
在这里插入图片描述
解题思路:
这道题其实有很多解法,比如我们首先能够想到的就是“左连接”将两张表连接起来,顺便也是对这个知识点的复习,我也把正确代码粘贴下来,供大家学习参考。
代码如下:

左连接的正确代码:

SELECT cust_id,order_date
FROM Orders AS A
LEFT JOIN OrderItems AS B
ON A.order_num=B.order_num
WHERE B.prod_id='BR01'
ORDER BY order_date ASC

子查询的正确代码:

SELECT cust_id,order_date
FROM Orders
WHERE order_num IN (
    SELECT order_num
    FROM OrderItems
    WHERE prod_id='BR01'
)
ORDER BY order_date ASC

结果:
在这里插入图片描述

【SQL93】返回购买 prod_id 为 BR01 的产品的所有顾客的电子邮件(一)
在这里插入图片描述
在这里插入图片描述

解题思路:
这道题我采用的是左连接的方法,将三张表格两两连接,再用WHERE子句,找出满足条件的prod_id即可。
代码如下:

SELECT cust_email
FROM Customers AS C
LEFT JOIN Orders AS B
ON C.cust_id=B.cust_id
LEFT JOIN OrderItems AS A
ON A.order_num=B.order_num
WHERE  prod_id ='BR01' 

结果:
在这里插入图片描述

【SQL94】返回每个顾客不同订单的总金额
在这里插入图片描述
在这里插入图片描述
解题思路:
这道题使用的是表之间的连接,具体可以看代码,没有很复杂的东西,分组,排序,看清题目就可以了。
代码如下:

SELECT cust_id,SUM(item_price*quantity) total_ordered
FROM OrderItems AS A,Orders AS B 
WHERE A.order_num = B.order_num 
GROUP BY cust_id
ORDER BY total_ordered DESC

结果:
在这里插入图片描述

【SQL95】 从 Products 表中检索所有的产品名称以及对应的销售总数
在这里插入图片描述
在这里插入图片描述

解题思路:
这道题和上一题是一样的,只不过我犯了一个错误,经常会把最后那一行的GROUP BY忘记,刚刚去搜了以下GROUP BY 的用法。
GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等。

代码如下:

SELECT prod_name,SUM(quantity) AS quant_sold
FROM  Products AS A,OrderItems AS B
WHERE  A.prod_id=B.prod_id	
GROUP BY prod_name

结果:
在这里插入图片描述

总结

  今天做题是有点磕磕绊绊的,问题都出在细节上,不过还是搞明白啦!今天下午还追了好几集电视机,呜呜呜罪恶感好强!但是不会阻挡我发博客的脚步!!
  知识这种东西真的不能自己闭门造车,还是需要和大家一起思考,才能够学的更全面!
  不懂的问题要及时搞明白,不能得过且过啦!!大家一起加油!
  感谢您宝贵的阅读,关注和点赞噢!❤

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祖国滴花骨朵儿

感谢之情无以言表,会用行动证明

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值