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)