Hive sql 每天场景题45

Posted 吃再多糖也不长胖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive sql 每天场景题45相关的知识,希望对你有一定的参考价值。

45、现有电商订单表(order_detail)如下。

order_id
(订单id)

user_id
(用户id)

product_id
(商品id)

price
(售价)

cnt
(数量)

order_date
(下单时间)

1

1

1

5000

1

2022-01-01

2

1

3

5500

1

2022-01-02

3

1

7

35

2

2022-02-01

4

2

2

3800

3

2022-03-03

注:复购率指用户在一段时间内对某商品的重复购买比例,复购率越大,则反映出消费者对品牌的忠诚度就越高,也叫回头率

此处我们定义:某商品复购率 = 近90天内购买它至少两次的人数 ÷ 90天内购买它的总人数

近90天指包含最大日期(以订单详情表(order_detail)中最后的日期)在内的近90天。结果中复购率保留2位小数,并按复购率倒序、商品ID升序排序。

期望结果如下:

product_id
<int>
(商品id)

crp
<decimal(16,2)>
(复购率)

3

1.00

9

1.00

8

0.50

5

0.33

7

0.25

1

0.00

2

0.00

6

0.00

代码

	with t1 as (
	select 
	-- 90天内每个人购买各种商品的次数
	product_id
	,user_id
	,count(*) as cost_cnt
	from (select
	-- 找出90天前日期
	*
	,date_sub(max(order_date) over(),90)as mindate
	from order_detail
	)a
	where order_date >= mindate
	group by 
	product_id
	,user_id
	)
select 
product_id
,cast(sum(if(cost_cnt>=2,1,0))/count(distinct user_id) as decimal(15,2)) as cpr
from t1
group by product_id
order by cpr desc,product_id asc 

以上是关于Hive sql 每天场景题45的主要内容,如果未能解决你的问题,请参考以下文章

Hive sql 每天场景题21-22

Hive sql 每天场景题 41

每天一道大厂SQL题Day02电商场景TopK统计

每天一道大厂SQL题Day02电商场景TopK统计

9大 HIVE SQL 最频繁被问到的面试题

面试题: Hive-SQL查询连续活跃登录用户思路详解