【发布时间】:2016-10-12 01:16:47
【问题描述】:
我想获取每个人的weight 占weight 总数的百分比。
这是我的数据:
TableA
Name | Size | Weight
------------------------------------
Jamie | 0.25 | 48
Jamie | 0.50 | 48
Taylor | 0.25 | 55
Taylor | 0.30 | 54
Taylor | 0.45 | 48
Taylor | 0.45 | 60
这是我想要的输出:
Name | Size | Percentage | Weight
---------------------------------------------------------------
Jamie | 0.25 | 50% | 48
Jamie | 0.50 | 50% | 48
Taylor | 0.25 | 35.03% | 55
Taylor | 0.30 | 34.39% | 54
Taylor | 0.45 | 49.76% | 108
例如:
Jamie 的总重量是 96 (48+48),所以我必须将他的体重值计算为每行 96 的百分比。
对于 taylor,尺寸为 0.45 两次,但重量不同,因此在输出中它应该将重量 (48+60) 和 (108/217)*100=49.76 的百分比相加
【问题讨论】:
-
好的,您处理过的查询在哪里出现问题,或者您的结果与预期不符?你有没有尝试过任何东西?
-
@Dresden 我有这个查询 SELECT *, 100 * Weight/SUM(Weight) OVER(Partition By Name) AS Per FROM worker 但它正在计算大小 twicw
-
您似乎把我们误认为是一个 SQL 编写服务,在那里您发布您的(非常令人困惑的)需求并期望有人为您编写一个 SELECT 语句。这不是这个网站的工作方式。您自己进行了哪些尝试来编写查询以获得您想要的结果,以及它如何具体没有按预期工作?请edit您的问题并添加该信息。当您使用它时,为您正在使用的特定 DBMS 添加一个标签;不同引擎之间的功能和语法有所不同。谢谢。
-
@KenWhite 我正在使用 MSSQL,感谢不合适的 cmets
-
这到底是怎么做的:
SELECT *, 100 * Weight/SUM(Weight) OVER(Partition By Name) AS Per FROM worker计算大小两次,因为没有计算甚至引用大小。该查询有什么问题。为什么 Taylor 的最终结果中的权重列会发生变化? (&按什么逻辑?)
标签: sql sql-server