【SQL自学打卡|DAY10】——中秋快乐!

本文通过一系列SQL练习题,讲解了如何使用SQL进行数据汇总,如计算总数、最大值等,并介绍了分组数据的方法,如按订单号分组、筛选条件等。同时,文中还分析了在SQL查询中GROUP BY和HAVING子句的正确使用。
摘要由CSDN通过智能技术生成

前言

❤祝CSDN的各位哥哥姐姐大佬们中秋节快乐呀!❤

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

知识点回顾

字符串的截取:substring(字符串,起始位置,截取字符数)

字符串的拼接:concat(字符串1,字符串2,字符串3,…)

字母大写:upper(字符串)

一、汇总数据

在这里插入图片描述


【SQL83】确定已售出产品的总数
在这里插入图片描述

解题思路:
由题意可知,算总数的话就用SUM()求和函数,还需要用到重命名AS
代码如下:

SELECT SUM(quantity) AS items_ordered
FROM OrderItems

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

【SQL84】确定已售出产品项 BR01 的总数
在这里插入图片描述

解题思路:
本题和上一题的区别在于多了一个限定条件:确定已售出产品项(prod_id)为"BR01"的总数。还需要用到重命名 AS
代码如下:

SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE prod_id='BR01'

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

【SQL85】确定 Products 表中价格不超过 10 美元的最贵产品的价格
在这里插入图片描述

解题思路:
返回十元以下最高价格,涉及到以下三个知识点
1、最大值函数 max()
2、条件筛选 注意这里是需要 <=10
3、重命名 AS
这一题我一开始做错了,没有考虑到最大值,MAX函数使用的位置出错了,我刚开始用了SUM函数
代码如下:

SELECT MAX(prod_price) AS  max_price
FROM Products
WHERE prod_price<=10

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


二、分组数据

在这里插入图片描述



【SQL86】返回每个订单号有多少行数
在这里插入图片描述

解题思路:
先执行GROUP BY order_num,对所有记录分组,分为三组,这里的GROUP BY 也起到了去重的作用,我一开始只考虑到了DISTINCT去重,所以出错了。

再执行SELECT order_num, COUNT(order_num) AS order_lines
最后执行ORDER BY order_lines ASC 对结果进行排序
错误分析:
在这里插入图片描述
翻译:SQL_ERROR_INFO:“在没有分组依据的聚合查询中,选择列表的表达式#1包含未聚合的列’OrderItems.order_num’;这与SQL_mode=only_full_GROUP_BY不兼容”

正确代码如下:

SELECT order_num,
COUNT(order_num) AS order_lines
FROM OrderItems
GROUP BY order_num
ORDER BY order_lines ASC

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

【SQL87】每个供应商成本最低的产品
在这里插入图片描述

解题思路:
上一题的错处,让我这一题避免了。这个是取对应的最小值,然后升序排序。
参考上一题,这一题就很简单啦,偶尔出出错也不错,长记性了,下次不会再错了!
代码如下:

SELECT vend_id,MIN(prod_price) AS cheapest_item
FROM Products
GROUP BY vend_id
ORDER BY cheapest_item ASC

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

【SQL88】确定最佳顾客
在这里插入图片描述

解题思路:
where—过滤过滤指定的行
having–过滤分组,与group by连用

很少碰到HAVING,刚刚用的是WHERE,直接报错。今天开始牢记GROUP BY 和HAVING 搭配使用!
代码如下:

SELECT order_num
FROM OrderItems
GROUP BY order_num
HAVING SUM(quantity)>=100
ORDER BY order_num ASC

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

【SQL89】确定最佳顾客的另一种方式(一)
在这里插入图片描述

解题思路:
这一题和上面那一题是一样道理,只不过多了一步乘法,依旧是对于GROUP BY 和HAVING 搭配使用的考查,牢记!!
代码如下:

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

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

【SQL90】纠错3
在这里插入图片描述
解题思路:
本题应是按照订单号进行分组,而不是按照各个订单的数量去分组
正确代码如下:

SELECT order_num, COUNT(*) AS items 
FROM OrderItems 
GROUP BY order_num
HAVING COUNT(*) >= 3 
ORDER BY items, order_num;

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

总结

  希望大家一键三连呀!!谢谢!!!
  祝大家中秋佳节人团圆!

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

祖国滴花骨朵儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值