代码检查:与聚合相关的问题
报告 SQL 聚合函数的无效使用。
考虑以下情况:在 HAVING 和 ORDER BY 子句中使用但在 GROUP BY 子句中丢失的列。
CREATE TABLE foo(id INT PRIMARY KEY, a INT, b INT); 选择 a, MAX(b) 从 foo GROUP BY a HAVING b > 0; SELECT * FROM foo GROUP BY a ORDER BY;当通过主键进行分组时,此规则不适用。
SELECT * FROM foo GROUP BY id ORDER BY;在错误的上下文中聚合函数。通常,您可以在以下上下文中使用聚合函数: SELECT 中的表达式列表;在 HAVING 和 ORDER BY 部分;和其他特定方言的情况。以下查询将显示错误。
从 foo 中选择一个 MAX(b) > 0; 从 foo GROUP BY MAX(a) 中选择一个;聚合函数的嵌套调用。
从 foo 组中选择 MAX(SUM(a));此规则不适用于分析函数。以下查询有效且正确。
从 foo 中选择 MAX(SUM(a) OVER ());没有聚合函数的 HAVING 的用法。在这种情况下,请考虑使用 WHERE 部分重写您的代码。
通过 a > 0 从 foo 组中选择 a, MAX(b);
禁止编辑器中的检查
将插入符号放在突出显示的行上,然后按Alt+Enter或单击。
单击要抑制的检查旁边的箭头,然后选择必要的抑制操作。
最后修改:2022 年 2 月 11 日