[
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)