gpt4 book ai didi

sql-server - TSQL分组计算

转载 作者:行者123 更新时间:2023-12-04 05:17:46 25 4
gpt4 key购买 nike

我得到了这张表,里面有一些数据:

SELECT Id, SubId, N1, N2, N3 FROM table1 WHERE Id = 2

Id SubId N1 N2 N3
----------- -------- ----------- ----------- ----------------------
2 1 94917 97030 0
2 2 35087 41306 0
2 3 189671 194224 0
2 4 44905 46218 0
2 5 65760 70959 0
2 6 620 2395 0
2 7 60336 69531 0
2 8 65517 70666 0

我运行这个查询
UPDATE table1
SET N3 = CASE WHEN N1 = 0 THEN 0 ELSE (( N2 * 1.0 / N1 ) -1) * 100 END

Id SubId N1 N2 N3
----------- -------- ----------- ----------- ----------------------
2 1 94917 97030 2.2261554832
2 2 35087 41306 17.7245133525
2 3 189671 194224 2.4004723969
2 4 44905 46218 2.9239505622
2 5 65760 70959 7.9060218978
2 6 620 2395 286.2903225806
2 7 60336 69531 15.2396579156
2 8 65517 70666 7.8590289543

因此,当我按 Id 对表进行分组时,我得到了以下数据:
SELECT  Id, 
SUM(N1) AS N1,
SUM(N2) AS N2,
CAST(0 AS NUMERIC(10,2)) AS N3
INTO table2
FROM table1
GROUP BY Id

UPDATE table2
SET N3 = CASE WHEN N1 = 0 THEN 0 ELSE (( N2 * 1.0 / N1 ) -1) * 100 END

SELECT Id, N1, N2, N3 FROM table2 WHERE Id = 2

Id N1 N2 N3
----------- ----------- ----------- ----------------------
2 556813 592329 6.38

问题是我如何在不重新计算字段(第二次更新)的情况下按 ID(6.38)分组时获得相同的 N3 值,我试图应用反向计算((N3/100)+ 1)并对 N3 求和领域,但没有奏效。

最佳答案

只需更换 N1N2SUM(N1)SUM(N2)分别..

SELECT  Id, 
SUM(N1) AS N1,
SUM(N2) AS N2,
N3 = CAST(CASE WHEN SUM(N1) = 0 THEN 0 ELSE (( SUM(N2) * 1.0 / SUM(N1) ) -1) * 100 END AS NUMERIC(10,2))
FROM table1
GROUP BY Id

演示在 http://sqlfiddle.com/#!3/de849/4/0

关于sql-server - TSQL分组计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044229/

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