gpt4 book ai didi

sql - 即使它是聚合的,列在选择列表中无效

转载 作者:行者123 更新时间:2023-12-02 23:38:20 24 4
gpt4 key购买 nike

这是我的查询:

SELECT ScriptName
,BranchName
,AVG(Passes) OVER (PARTITION BY ScriptName, BranchName) AS AvgPasses
FROM temp3
GROUP BY ScriptName, BranchName

这是我的错误:

Column 'temp3.Passes' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

我理解GROUP BY。 OVER PARTITION BY 是否意味着它不能与 GROUP BY 一起使用?我在 MSDN 上找不到任何东西。如果这确实意味着它不起作用,有人可以解释为什么吗?我想不出在什么情况下会因此产生问题。

最佳答案

是的,overpartitionby意味着它不能与groupby一起使用。所以删除它:

SELECT ScriptName, BranchName,
AVG(Passes) AS AvgPasses
FROM temp3
GROUP BY ScriptName, BranchName;

从技术上讲,原因是 Passes 不在 group by 中,也不在聚合函数中。

首先,如果Passes是一个整数,那么平均值也将是一个整数。如果您想要浮点平均值,请将值转换为适当的类型。

其次,分析函数确实可以与group by一起使用。例如,如果您想要所有平均值的总和,您可以这样做:

SELECT ScriptName, BranchName,
AVG(Passes) AS AvgPasses,
SUM(AVG(Passes)) over (ScriptName, BranchName) as SumAvg
FROM temp3
GROUP BY ScriptName, BranchName;

好吧,这看起来很奇怪。但是 min()max() 可能有用。

关于sql - 即使它是聚合的,列在选择列表中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com