首页 > 试题广场 >

10月的新户客单价和获客成本

[编程题]10月的新户客单价和获客成本
  • 热度指数:89714 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

商品信息表tb_product_info

id product_id
shop_id tag in_price quantity release_time
1 8001 901 日用 60 1000 2020-01-01 10:00:00
2 8002 901 零食 140 500 2020-01-01 10:00:00
3 8003 901 零食 160 500 2020-01-01 10:00:00
4 8004 902 零食
130 500 2020-01-01 10:00:00
(product_id-商品ID, shop_id-店铺ID, tag-商品类别标签, in_price-进货价格, quantity-进货数量, release_time-上架时间)

订单总表tb_order_overall

id order_id uid event_time total_amount total_cnt status
1 301002 102 2021-10-01 11:00:00 235 2 1
2 301003 101 2021-10-02 10:00:00
300 2 1
3 301005 104 2021-10-03 10:00:00
160 1 1
(order_id-订单号, uid-用户ID, event_time-下单时间, total_amount-订单总金额, total_cnt-订单商品总件数, status-订单状态)

订单明细表tb_order_detail

id order_id product_id price cnt
1 301002 8001 85 1
2 301002
8003
180 1
3 301003
8004
140
1
4 301003
8003
180 1
5 301005
8003
180 1

(order_id-订单号, product_id-商品ID, price-商品单价, cnt-下单数量)


问题计算2021年10月商城里所有新用户的首单平均交易金额(客单价)和平均获客成本(保留一位小数)。

:订单的优惠金额 = 订单明细里的{该订单各商品单价×数量之和} - 订单总表里的{订单总金额} 。

输出示例
示例数据的输出结果如下
avg_amount avg_cost
231.7 23.3
解释:
2021年10月有3个新用户,102的首单为301002,订单金额为235,商品总金额为85+180=265,优惠金额为30;
101的首单为301003,订单金额为300,商品总金额为140+180=320,优惠金额为20;
104的首单为301005,订单金额为160,商品总金额为180,优惠金额为20;
平均首单客单价为(235+300+160)/3=231.7,平均获客成本为(30+20+20)/3=23.3
示例1

输入

DROP TABLE IF EXISTS tb_order_overall;
CREATE TABLE tb_order_overall (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    order_id INT NOT NULL COMMENT '订单号',
    uid INT NOT NULL COMMENT '用户ID',
    event_time datetime COMMENT '下单时间',
    total_amount DECIMAL NOT NULL COMMENT '订单总金额',
    total_cnt INT NOT NULL COMMENT '订单商品总件数',
    `status` TINYINT NOT NULL COMMENT '订单状态'
) CHARACTER SET utf8 COLLATE utf8_bin;

DROP TABLE IF EXISTS tb_product_info;
CREATE TABLE tb_product_info (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    product_id INT NOT NULL COMMENT '商品ID',
    shop_id INT NOT NULL COMMENT '店铺ID',
    tag VARCHAR(12) COMMENT '商品类别标签',
    in_price DECIMAL NOT NULL COMMENT '进货价格',
    quantity INT NOT NULL COMMENT '进货数量',
    release_time datetime COMMENT '上架时间'
) CHARACTER SET utf8 COLLATE utf8_bin;

DROP TABLE IF EXISTS tb_order_detail;
CREATE TABLE tb_order_detail (
    id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    order_id INT NOT NULL COMMENT '订单号',
    product_id INT NOT NULL COMMENT '商品ID',
    price DECIMAL NOT NULL COMMENT '商品单价',
    cnt INT NOT NULL COMMENT '下单数量'
) CHARACTER SET utf8 COLLATE utf8_bin;

INSERT INTO tb_product_info(product_id, shop_id, tag, in_price, quantity, release_time) VALUES
  (8001, 901, '日用', 60, 1000, '2020-01-01 10:00:00'),
  (8002, 901, '零食', 140, 500, '2020-01-01 10:00:00'),
  (8003, 901, '零食', 160, 500, '2020-01-01 10:00:00'),
  (8004, 902, '零食', 130, 500, '2020-01-01 10:00:00');

INSERT INTO tb_order_overall(order_id, uid, event_time, total_amount, total_cnt, `status`) VALUES
  (301002, 102, '2021-10-01 11:00:00', 235, 2, 1),
  (301003, 101, '2021-10-02 10:00:00', 300, 2, 1),
  (301005, 104, '2021-10-03 10:00:00', 160, 1, 1);

INSERT INTO tb_order_detail(order_id, product_id, price, cnt) VALUES
  (301002, 8001, 85, 1),
  (301002, 8003, 180, 1),
  (301003, 8004, 140, 1),
  (301003, 8003, 180, 1),
  (301005, 8003, 180, 1);

输出

231.7|23.3
头像 阿翟啊
发表于 2021-12-01 15:15:02
select round(sum(total_amount)/count(order_id),1) avg_amount, round(avg(cost),1) avg_cost from (select a.order_id, total_amount, 展开全文
头像 Cole4Youreyez
发表于 2022-04-12 15:55:37
问题:请计算2021年10月商城里所有新用户的首***均交易金额(客单价)和平均获客成本(保留一位小数)。 注:订单的优惠金额 = 订单明细里的{该订单各商品单价×数量之和} - 订单总表里的{订单总金额} 。 1.题目要求的指标与第一个表无关,因此我们只需要后面两个表即可完成计算。 由于要求新用户 展开全文
头像 幻想家刘同学
发表于 2022-01-10 11:52:15
#指标:平均首单客单价=订单总金额/订单数 # 1.平均首单客单价 # select round(sum(total_amount)/count(distinct order_id),1) avg_amount # from tb_order_overall # where date_format( 展开全文
头像 webary
发表于 2021-12-08 20:33:54
10月的新户客单价和获客成本 明确题意: 计算2021年10月商城里所有新用户的首单平均交易金额(客单价)和平均获客成本(保留一位小数)。 某个订单的优惠金额可通过订单明细里的 {该订单各商品单价×数量之和-订单总金额} (订单总金额在订单总表中)得到。 问题分解: 统计用户首单信息(生成子表t 展开全文
头像 牛客787466413号
发表于 2021-12-22 14:10:44
SELECT ROUND(SUM(total_amount)/COUNT(*),1) avg_amount, -- 总销售额/总人数 即为平均交易金额 ROUND(SUM(total_discount)/COUNT(*),1) avg_cost -- 总优惠金额/总人数 即为平均获客成本 展开全文
头像 酸菜鱼土豆大侠
发表于 2022-11-06 23:46:47
【场景】:新用户首次行为 【分类】:聚合函数、子查询 分析思路 难点: 1.获取新用户首单的信息。使用in子查询 (1)统计每个订单的商品总金额 [使用]:sum() group by (2)计算2021年10月商城里所有新用户的首单平均交易金额(客单价)和平均获客成本(保留一位小数) 展开全文
头像 牛客796304033号
发表于 2022-03-01 15:53:02
此题共包含三张表: 表1:tb_order_detail 表2:tb_order_overall 表3:tb_product_info 要解决的问题: 请计算2021年10月商城里所有新用户的首***均交易金额(客单价)和平均获客成本(保留一位小数)。 注:订单的优惠金额 = 订单明细里的{该订单各 展开全文
头像 星辰薄荷
发表于 2021-12-01 14:37:41
with t as( //2021年10月份新用户首次订单信息 select min(order_id) as "order_id" from tb_order_overall group by uid having date_format(min(event_tim 展开全文
头像 通辽可汗克鸽勃
发表于 2021-12-15 14:03:22
第一次速度击败了100%的人,只用总和处于人数就可以,没用到题解的在对id进行商品的聚合,所以会快很多 用了 () in (select)来匹配每个用户的第一次订单, select round(amount/num,1) , round((cost-amount)/num,1) fro 展开全文
头像 视星等无穷
发表于 2022-04-16 12:21:40
第一步 得到所有满足条件的订单(用户初次,2021年10月)的金额和优惠金额表t1 第二步 对得到的金额和优惠金额求平均 with t1 as (select min(total_amount) amount,sum(price*cnt)-min(total_amount) cost from tb 展开全文

问题信息

难度:
287条回答 2674浏览

热门推荐

通过挑战的用户

查看代码
10月的新户客单价和获客成本