gpt4 book ai didi

mysql - 获取日期之间的总平均值

转载 作者:行者123 更新时间:2023-11-29 06:04:45 25 4
gpt4 key购买 nike

我有一个名为 sales 的表,格式如下。

sale_id         user_id          sale_date              sale_cost
j847bv-6ggd bd48ta36-cn5x 2017-01-10 15:43:12 30
vf87x2-15gr bd48ta36-cn5x 2017-01-05 13:41:16 60
3gfd7f-2cdd 8g4f5ccf-1fet 2017-01-15 14:10:12 100
4bgfd5-12vn 8g4f5ccf-1fet 2017-01-20 19:47:14 20
b58e32-bf87 8g4f5ccf-1fet 2017-01-20 17:35:13 15
bg87db-127g gr4gg1f4-3gbb 2017-01-20 12:26:15 80

如何获得用户 (user_d) 在首次购买后前 X 天的平均消费金额?我不想要每个用户的平均值,而是所有用户的总平均值。

我知道我可以使用 select avg(sale_cost) 获得平均值,但我不确定如何找出某个日期期间的平均值。

最佳答案

您可以找到从初始销售日期开始的 10 天日期范围内每个用户的平均总数,如下所示:

select avg(sale_cost)
from (
select sum(t.sale_cost) sale_cost
from your_table t
join (
select user_id, min(sale_date) start_date, date_add(min(sale_date), interval 10 day) end_date
from your_table
group by user_id
) t2 on t.user_id = t2.user_id
and t.sale_date between t2.start_date and t2.end_date
group by t.user_id
) t;

它会为每个用户找到第一个 sale_date 和 10 天后的日期。然后将其与表格连接以获得该范围内每个用户的总计,最后计算上述总计的平均值。

Demo

如果您想找到第一个 sale_date(不是个人)和 10 天之间的平均值,请使用:

select avg(sale_cost)
from (
select sum(t.sale_cost) sale_cost
from your_table t
join (
select min(sale_date) start_date, date_add(min(sale_date), interval 10 day) end_date
from your_table
) t2 on t.sale_date between t2.start_date and t2.end_date
group by t.user_id
) t;

Demo

关于mysql - 获取日期之间的总平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com