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

Reply via email to