gpt4 book ai didi

sql - 计算每种奖励类型的平均值

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

对于每种奖励类型,我试图计算存款中包含该类型奖励的平均次数。它的一个限制是,不包括奖励类型的存款不会对该类型的平均值做出贡献,而不是 0。

架构如下:

rewards(rewardId, rewardType, rewardValue);
deposit(depositId, depositDate, customerId);
details(depositId, rewardsId, numDeposit);

这是我的查询:

select r.rewardsId, avg(dep.depositId) 
from deposit dep join details det
on dep.depositId = det.depositId join rewards r
on r.rewardsId = det.rewardsId
group by r.rewardsId;

我得到的答案似乎不正确,因为平均值非常高,但当我手动计算时,每个 rewardType 大约有 2 个。有人可以指出我做错了什么吗?

最佳答案

由于您只想计算包含奖励类型的存款,那么您可以这样计算它们:

select t.rewardsId, avg(t.counter) from (
select
r.rewardsId,
sum(case when det.rewardsId is null then 0 else 1 end) counter
from deposit dep join details det
on dep.depositId = det.depositId join rewards r
on r.rewardsId = det.rewardsId
group by r.rewardsId, dep.depositId
) t
group by t.rewardsId

关于sql - 计算每种奖励类型的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093522/

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