使用聚合函数的问题

Posted

技术标签:

【中文标题】使用聚合函数的问题【英文标题】: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? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于使用聚合函数的问题的主要内容,如果未能解决你的问题,请参考以下文章

sql聚合函数的应用

为啥聚合函数不能放在where后面?

mysql 聚合函数相关问题

SQL Server中的聚合函数都有哪些?

MySQL窗口函数_聚合函数

MySQL函数的聚合函数