gpt4 book ai didi

SQL - 如何根据值执行计算

转载 作者:行者123 更新时间:2023-12-02 00:49:42 27 4
gpt4 key购买 nike

我为糟糕的标题道歉。我不确定这会被称为什么。

我有一个包含以下数据的表:

 Year     Item     Count
2018 A 5
2018 A 12
2018 A 7
2018 B 3
2018 B 1
2018 B 8
2018 C 50
2018 C 38
2018 C 42
2019 A 8
2019 A 14
2019 A 9
2019 B 5
2019 B 4
2019 B 12
2019 C 62
2019 C 45
2019 C 48

我想做的是按年份计算每个项目的计数总和,然后对每年执行 (A + B)/C。我觉得这应该很简单,但我就是想不通。

所以输出是

 2018 .2769
2019 .3161

我通过逐步计算 (A + B)/C 来手动获得这些:

 2018 ((5 + 12 + 7) + (3 + 1 + 8)) / (50 + 38 + 42)
2018 ((24) + (12)) / 130
2018 36 / 130
2018 .2769

2019 ((8 + 14 + 9) + (5 + 4 + 12)) / (62 + 45 + 48)
2019 ((31) + (21)) / (155)
2019 52 / 155
2019 .3355

任何帮助将不胜感激!

最佳答案

使用条件聚合:

select
[Year],
round(
1.0 *
sum(case when [Item] in ('A', 'B') then [Count] else 0 end)/
sum(case when [Item] = 'C' then [Count] else 0 end)
, 4
) result
from tablename
group by [Year]

您可以更改:

sum(case when [Item] = 'C' then [Count] else 0 end)

到:

sum(case when [Item] = 'C' then [Count] end)

为了避免被 0 除,如果一年内没有 [Item] = 'C' 的行。
查看demo .
结果:

> Year | result        
> ---: | :-----
> 2018 | 0.2769
> 2019 | 0.3355

关于SQL - 如何根据值执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58771885/

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