You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "benj (Jira)" <ji...@apache.org> on 2020/01/20 09:01:00 UTC
[jira] [Commented] (DRILL-7539) Aggregate expression is illegal in
GROUP BY clause
[ https://issues.apache.org/jira/browse/DRILL-7539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17019310#comment-17019310 ]
benj commented on DRILL-7539:
-----------------------------
Please note that is also possible to bypass the problem with fully prefixing columns used in GROUP BY
Example (on the same way as before):
{code:sql}
/* OK because the GROUP BY is on x.b (not only b) */
apache drill 1.17> SELECT a, any_value(b) AS b FROM (SELECT 'a' a, 1 b) x GROUP BY a, x.b;
+---+---+
| a | b |
+---+---+
| a | 1 |
+---+---+
{code}
> Aggregate expression is illegal in GROUP BY clause
> --------------------------------------------------
>
> Key: DRILL-7539
> URL: https://issues.apache.org/jira/browse/DRILL-7539
> Project: Apache Drill
> Issue Type: Bug
> Components: SQL Parser
> Affects Versions: 1.17.0
> Reporter: benj
> Priority: Major
>
> When using GROUPED field in aggregate function it works unless the field is aliased with the original name of the field.
> Example (minimalist example with no real sense but based on structure actually used (with more complex GROUP BY part)):
> {code:sql}
> /* OK because aggregate is on b that is not a grouped field */
> apache drill 1.17> SELECT a, any_value(b) AS b FROM (SELECT 'a' a, 1 b) x GROUP BY a;
> +---+---+
> | a | b |
> +---+---+
> | a | 1 |
> +---+---+
> /* NOK because the aggregate on grouped field b is aliased to b (name used on the group by) */
> apache drill 1.17> SELECT a, any_value(b) AS b FROM (SELECT 'a' a, 1 b) x GROUP BY a, b;
> Error: VALIDATION ERROR: From line 1, column 11 to line 1, column 16: Aggregate expression is illegal in GROUP BY clause
> /* OK as aggregate on grouped_field b is aliased to c */
> apache drill 1.17> SELECT a, any_value(b) AS c FROM (SELECT 'a' a, 1 b) x GROUP BY a, b;
> +---+---+
> | a | c |
> +---+---+
> | a | 1 |
> +---+---+
> {code}
> This is a problem that is easy to work around but it's easy to get caught. And the bypass will sometimes requires an additional level of SELECT, which is rarely desired.
> Tested to compare VS postgres that doesn't have this problem.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)