diff --git a/src/Interpreters/ExpressionAnalyzer.cpp b/src/Interpreters/ExpressionAnalyzer.cpp index 13f23643c3aad59954c7e444cab24b5a0e39b86b..77f3c9d7537f1ca14f4bdd01d032bd86fb7abc0d 100644 --- a/src/Interpreters/ExpressionAnalyzer.cpp +++ b/src/Interpreters/ExpressionAnalyzer.cpp @@ -55,6 +55,7 @@ #include #include +#include namespace DB { diff --git a/src/Interpreters/GetAggregatesVisitor.h b/src/Interpreters/GetAggregatesVisitor.h index 266187aaffbcbc1acad04e655b474c73674d6267..0eeab8348fd7307eb5ea4ee50c2eed1fd21d290b 100644 --- a/src/Interpreters/GetAggregatesVisitor.h +++ b/src/Interpreters/GetAggregatesVisitor.h @@ -31,6 +31,12 @@ public: { if (child->as() || child->as()) return false; + if (auto * select = node->as()) + { + // We don't analysis WITH statement because it might contain useless aggregates + if (child == select->with()) + return false; + } if (auto * func = node->as()) { if (isAggregateFunction(*func))