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

发布于:2024-03-11 ⋅ 阅读:(82) ⋅ 点赞:(0)

题目大概意思:

找出网红带来的订单号和销售额(销售额是该订单的,比如凑单),满足是优惠码是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刷题做记录!

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到