sql面试题21:营销带货销量分析

博客围绕SQL题目展开,题目要求从订单和品类两个数据表中,找出网红带来的满足优惠码为1的B类商品的订单号和销售额。记录了解题思路,还指出做题中的错误,如子查询in列需严格对应、in子查询不能跟别名,是学习SQL刷题的记录。

题目大概意思:

找出网红带来的订单号和销售额(销售额是该订单的,比如凑单),满足是优惠码是1的,B类商品

数据表两个,分别是订单和品类

CREATE TABLE 订单 
(
    订单号	VARCHAR(512),
    商品号	VARCHAR(512),
    支付金额	INT,
    优惠券码	INT
);

INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00A', 'sku01', '60', '01');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00A', 'sku02', '40', '01');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00B', 'sku02', '60', '02');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00C', 'sku03', '40', '03');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00C', 'sku01', '80', '03');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00C', 'sku06', '60', '03');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00D', 'sku04', '80', '01');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00D', 'sku05', '80', '01');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00E', 'sku02', '80', '04');
INSERT INTO 订单 (订单号, 商品号, 支付金额, 优惠券码) VALUES ('00E', 'sku04', '80', '04');



CREATE TABLE 品类表 
(
    商品号	VARCHAR(512),
    商品类型	VARCHAR(512)
);

INSERT INTO 品类表 (商品号, 商品类型) VALUES ('sku01', 'A');
INSERT INTO 品类表 (商品号, 商品类型) VALUES ('sku02', 'B');
INSERT INTO 品类表 (商品号, 商品类型) VALUES ('sku03', 'C');
INSERT INTO 品类表 (商品号, 商品类型) VALUES ('sku04', 'C');
INSERT INTO 品类表 (商品号, 商品类型) VALUES ('sku05', 'A');
INSERT INTO 品类表 (商品号, 商品类型) VALUES ('sku06', 'C');

解题思路记录

-- 1、先找出这个红人的订单号
SELECT a.订单号,a.商品号,a.支付金额,a.优惠券码,b.商品类型
FROM 订单 as a
INNER JOIN 品类表 AS b
on a.商品号 = b.商品号
WHERE a.优惠券码=1 AND b.商品类型 = "B"

在这里插入图片描述

-- 2、找出该订单号的利润
SELECT count(DISTINCT q.订单号) AS "网红带单数",
			 sum(q.支付金额) AS "网红带货总金额"
FROM 订单 AS q
WHERE q.订单号 IN(
SELECT a.订单号
FROM 订单 as a
INNER JOIN 品类表 AS b
on a.商品号 = b.商品号
WHERE a.优惠券码=1 AND b.商品类型 = "B"
)

在这里插入图片描述

自己做题的错误记录

1 、子查询in中我是只要订单号单列,而子查询里是两个列,这是错误的。必须严格列相等对应,单对单,多对多。

在这里插入图片描述

2、in子查询中不能在跟别名

在这里插入图片描述
本文学习的是猴子数据分析的SQL面试宝典,自己学习sql刷题做记录!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

配个VLAN吧

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值