表达式不在聚合或 GROUP BY 列中 异常
Posted
技术标签:
【中文标题】表达式不在聚合或 GROUP BY 列中 异常【英文标题】:Expression not in aggregate or GROUP BY columns Exception 【发布时间】:2017-05-24 06:33:01 【问题描述】:我在MS-Access
数据库中有一个名为ItemRates
的表,其中包含ItemID, ItemName, TotalFeet, RatePerItem, TotalRate
列,并且该数据库与我的java
应用程序相连。
当我运行以下查询时
String sql = "SELECT SUM(TotalRate) AS ItemRateSum, TotalFeet FROM ItemRates";
我得到以下异常
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 expression not in aggregate or
GROUP BY columns: PUBLIC.ITEMRATES.TOTALFEET
我在***
上看到了与此异常相关的其他问题,并且一个接受的答案建议在查询末尾添加GroupBy
子句。我添加了一个GroupBy
子句
String sql = "SELECT SUM(TotalRate) AS ItemRateSum, TotalFeet FROM
ItemRates GROUPBY ItemName";
我得到了几乎相同的异常(冒号后面的两个异常之间略有不同)
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 expression not in aggregate or
GROUP BY columns: GROUPBY.TOTALFEET
我在这里做错了什么?
【问题讨论】:
【参考方案1】:正确的语法是:
SELECT SUM(TotalRate) AS ItemRateSum, TotalFeet
FROM ItemRates
GROUP BY TotalFeet;
即TotalFeet
不是聚合函数的参数,所以它需要在GROUP BY
中。
【讨论】:
解决了这个问题。一旦时间限制结束,将接受答案。感谢您的回复。【参考方案2】:所有被选中但不属于聚合函数的列必须包含在 group by 子句中
【讨论】:
从 ItemRates GROUPBY ItemName 中选择 SUM(TotalRate) 作为 ItemRateSum以上是关于表达式不在聚合或 GROUP BY 列中 异常的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #3 不在 GROUP BY 子句中并且包含非聚合
ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列
#1055 - SELECT 列表的表达式不在 GROUP BY 子句中,并且包含非聚合列,这与 sql_mode=only_full_group_by 不兼容
org.apache.spark.sql.AnalysisException:表达式 't2.`sum_click_passed`' 既不在 group by 中,也不是聚合函数