【问题标题】:Problems with using an aggregate function使用聚合函数的问题
【发布时间】:2016-10-17 22:16:09
【问题描述】:

我正在尝试获取单个值,并将它们除以它们在列中的总和。

SELECT (column1 / SUM(column1))
FROM Table a

这很好用,但是当我包含另一个必要的信息时......

SELECT column2
      ,(column1 / SUM(column1)) 
FROM Table a

然后它返回 Column1 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

然后,如果我在 group by 子句中包含 column2,我的 SUM(column1) 只是根据 column2 值重新填充先前的值...。破坏了我的 SUM 的目的。

帮助?

【问题讨论】:

  • 您使用的是 MySQL 还是 SQL Server?

标签: mysql sql sql-server


【解决方案1】:

使用完整的显式子查询来获取 column1 的总和:

SELECT column2,
       column1 / (SELECT SUM(column1) FROM Tablea)
FROM Tablea

【讨论】:

    【解决方案2】:

    您可以使用求和窗口函数 - Sum(column1) over() -- 给出总和

    SELECT column2, column1/(SUM(column1) OVER()) FROM YourTable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-08
      • 2017-06-04
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多