使用聚合函数的问题
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
【讨论】:
以上是关于使用聚合函数的问题的主要内容,如果未能解决你的问题,请参考以下文章