You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2015/05/16 00:08:59 UTC
[jira] [Commented] (CALCITE-732) Implement multiple distinct-COUNT
using GROUPING SETS
[ https://issues.apache.org/jira/browse/CALCITE-732?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14546260#comment-14546260 ]
Julian Hyde commented on CALCITE-732:
-------------------------------------
For example, {code}select "department_id", count(distinct "gender") as g, count(distinct "education_level") as e
from foodmart."employee"
group by "department_id"{code} can be implemented using {code}select "department_id",
grouping("gender") as ig, "gender",
grouping("education_level") as ie, "education_level"
from foodmart."employee"
group by "department_id", grouping sets ("gender", "education_level");{code}
> Implement multiple distinct-COUNT using GROUPING SETS
> -----------------------------------------------------
>
> Key: CALCITE-732
> URL: https://issues.apache.org/jira/browse/CALCITE-732
> Project: Calcite
> Issue Type: Bug
> Reporter: Julian Hyde
> Assignee: Julian Hyde
>
> Currently if a query has COUNT(DISTINCT x) and COUNT(DISTINCT y) we compute the distinct counts separately and combine them using a join. The join isn't too expensive (because usually the GROUP BY has only a few keys) but we make multiple scans over the base table.
> I think we could translate multiple distinct-counts into a GROUPING SETS query (i.e. an Aggregate with more than one element in the groupSets field). If the underlying engine can evaluate that efficiently, then we have saved ourselves a join and several scans.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)