【问题标题】:Percentage calculation when size is same but weight is different尺寸相同但重量不同时的百分比计算
【发布时间】:2016-10-12 01:16:47
【问题描述】:

我想获取每个人的weightweight 总数的百分比。

这是我的数据:

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


【解决方案1】:

我建议你需要先汇总来源记录,然后计算百分比。因此,我建议您使用派生表按名称/大小对权重求和,然后在外部查询中完成。

SELECT
      name
    , size
    , 100 * Weight / SUM(Weight) OVER (PARTITION BY Name) AS Per
FROM (
      SELECT
            Name
          , Size
          , SUM(weight) AS weight
      FROM worker
      GROUP BY
            name
          , size
) AS w

【讨论】:

  • @KenWhite:Crickey。没什么好说的,代码实际上是不言自明的,但正如您所坚持的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多