gpt4 book ai didi

SQL单位值和按组累计和

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

我对 SQL 还是个新手,对此有点困惑。我将不胜感激任何帮助或建议。我有一个包含值列和 ID 列的表,然后按值列降序排列。即:

Value   | ID   
12 | A
09 | A
08 | B
08 | C
07 | A
06 | B
03 | B
01 | C

我正在尝试做两件事:

  1. 对于每一行,计算其各自 ID 占总和的百分比。第 1 行为 12/(12+9+7),第 2 行:3/(12+9+7),第 3 行:8/(8+6+3),等等。
  2. 计算每个 ID 在 (1) 中计算的百分比的运行总和。本质上只是每个 ID 的累加和。

输出看起来像这样。

Value | ID | UnitValue | RunningTotal  
-------------------------------------
12 | A | 0.43 | 0.43
09 | A | 0.32 | 0.75
08 | B | 0.47 | 0.47
08 | C | 0.89 | 0.89
07 | A | 0.25 | 1.00
06 | B | 0.35 | 0.82
03 | B | 0.18 | 1.00
01 | C | 0.11 | 1.00

最佳答案

对于 SQL Server 2008

;WITH CTE 
AS
(
SELECT
Value
,ID
,CONVERT(DECIMAL(10,2),Value/CONVERT(DECIMAL(10,2),SUM(Value) OVER(PARTITION BY [ID]))) AS [Unit Value]
FROM
Table1

)

SELECT a.Value,a.ID,a.[Unit Value], (SELECT SUM(b.[Unit Value])
FROM CTE b
WHERE a.ID = b.ID AND b.[Unit Value] <= a.[Unit Value]) AS [RunningTotal]
FROM CTE a
ORDER BY a.ID,[RunningTotal]

SQL FIDDLE DEMO

关于SQL单位值和按组累计和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18117369/

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