gpt4 book ai didi

sql查询累加值计算

转载 作者:行者123 更新时间:2023-12-04 23:47:01 26 4
gpt4 key购买 nike

在为以下要求生成正确的方法/查询时,我面临一些设计和逻辑问题。

我的主表是

从 ID='XYZ' 的 [table] 中选择 *

enter image description here

现在我已经按照以下要求计算了累积的风险权重,为此我需要编写一个逻辑

条件:

同一年的每个月

if(Jan) -> 当年一月 RiskCategory 权重之和

if(Feb) --> 同年1月和2月RiskCategory权重之和

if(March)--> 当年一月到三月的RiskCategory权重之和

if(April) --> 同年 1 月到 4 月的 RiskCategory 权重之和

.

.

.

if(Dec) --> 当年1-12月RiskCategory权重之和

**如果任何一个月都存在多个风险类别,那么

case 1. 如果值相同,则只取一个值。

情况2:如果不相同则取其中的最大值。

例如,如果我们想计算 2016 年 11 月的风险权重,那么我们应该只考虑以下行

enter image description here

** 因为我没有 2016 年 1 月到 9 月的数据,所以我只考虑了 10 月和 11 月的数据来计算 11 月的月份

现在结果应该是

0.649 心血管(病例 1)+

1.037 用于肺部(病例 2)+

2 型糖尿病为 0.666 +

0.798 用于精神病学 +

1.896 用于肾 +

0.536 常数 = 5.582

最终结果表应该是

enter image description here

请检查 sqlfiddle

http://sqlfiddle.com/#!6/8448e/6 [更新]

http://sqlfiddle.com/#!6/d05fe/1

最佳答案

如果我猜对了,你真的想要这个:

SELECT
ID,
Year,
Month,
RiskWeight = SUM(MaxRiskweight) + 0.536
FROM (
SELECT
t1.ID,
t1.Year,
t1.Month,
t2.RiskCategory,
MaxRiskweight = MAX(t2.Riskwight)
FROM
inputTable AS t1
JOIN inputTable AS t2
ON t1.ID = t2.ID AND
t1.Year = t2.Year AND
t2.Month <= t1.Month
GROUP BY
t1.ID,
t1.Year,
t1.Month,
t2.RiskCategory
) AS MaxRiskWeights
--WHERE
-- ID = 'XYZ'
GROUP BY
ID,
Year,
Month

我将 WHERE 子句注释掉,因为我想您想为表中的每个 ID 计算它。常量 0.536 被添加到 RiskWeight 的每个汇总行中,正如您在示例中给出的那样。

关于sql查询累加值计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418714/

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