Udostępnij za pośrednictwem


GROUPING SETS Equivalents

klauzula GROUP BY, która korzysta z zestawów grupowanie może generować equvalent zestaw wyników, aby wygenerowany przez UNION ALL kilka prostych GROUP BY klauzul.ZESTAWY grupowanie może generować wynik równy generowane przez proste operacji GROUP BY, ROLLUP lub moduł.Różne kombinacje USTAWIA grupowanie, ROLLUP lub moduł może wygenerować zestawy wyników równoważne.

W tym temacie przedstawiono przykłady zestawów grupowanie odpowiedniki.W przykładach są używane następujące skróty:

  • Agg(): agregowanie dowolnej funkcja

  • (całkowity): argumentu

grupowanie USTAWIA Equivalent z UNION ALL

Określanie zestawów grupowanie)<zestaw grupowanie>,...n ]) jak GROUP BY listy jest równoznaczne z UNION ALL kwerend, z jednego z zestawów grupowanie w liście GROUP BY. Agregaty na liczbach zmiennoprzecinkowych może zwrócić wyniki nieco inne.

Poniższe instrukcje są równoważne:

SELECT customer, year, SUM(sales)
FROM T
GROUP BY GROUPING SETS ((customer), (year))
SELECT customer, NULL as year, SUM(sales)
FROM T 
GROUP BY customer
UNION ALL
SELECT NULL as customer, year, SUM(sales)
FROM T 
GROUP BY year

Inne aktywa zestawy z przez proste GROUP grupowanie

Następujące klauzule zwrotu tych samych sumy:

GROUP BY GROUPING SETS ( () )
GROUP BY ()

Następujące klauzule zwrócić ten sam zestaw pojedynczej:

GROUP BY GROUPING SETS ( (C1, C2, ..., Cn) )
GROUP BY C1, C2, ..., Cn

Inne aktywa grupowanie zestawów ROLLUP

GRUPUJ WEDŁUG (PAKIET ZBIORCZY<Lista elementów projektu wstępnego>) z n wymiary w wejściowym listy jest równoznaczne z zestawów grupowanie ze wszystkich prefiksów)n+ 1) jego wprowadzania listy jako jej zestawów grupowanie.

Następujące klauzule są równoważne:

GROUP BY ROLLUP (C1, C2, …, Cn-1, Cn)
GROUP BY GROUPING SETS ( (C1, C2, …, Cn-1, Cn)
    ,(C1, C2, ..., Cn-1)
    ...
    ,(C1, C2)
    ,(C1)
    ,() )

Inne aktywa grupowanie zestawów moduł

GRUPUJ WEDŁUG (moduł<Lista elementów projektu wstępnego>) z n wymiary w wejściowym listy jest równoznaczne z zestawów grupowanie z pełnego zestaw (2n kombinacje wymiarów na liście wejściowej) jego wprowadzania listy jako jej zestawów grupowanie.

Następujące klauzule są równoważne:

GROUP BY CUBE (C1, C2, C3, ..., Cn-2, Cn-1, Cn)
GROUP BY GROUPING SETS (
     (C1, C2, C3, ..., Cn-2, Cn-1, Cn) -- All dimensions are included.
    ,( , C2, C3, ..., Cn-2, Cn-1, Cn) -- n-1 dimensions are included.
    ,(C1, C3, ..., Cn-2, Cn-1, Cn)
    …
    ,(C1, C2, C3, ..., Cn-2, Cn-1,)
    ,(C3, ..., Cn-2, Cn-1, Cn) -- n-2 dimensions included
    ,(C1  ..., Cn-2, Cn-1, Cn)
    …
    ,(C1, C2) -- 2 dimensions are included.
    ,…
    ,(C1, Cn)
    ,…
    ,(Cn-1, Cn)
    ,…
    ,(C1) -- 1 dimension included
    ,(C2)
    ,…
    ,(Cn-1)
    ,(Cn)
    ,() ) -- Grand total, 0 dimension is included.

Następujące klauzule są równoważne:

GROUP BY CUBE (C1, C2, C3)
GROUP BY GROUPING SETS ( (C1, C2, C3)
    ,(C1, C2)
    ,(C1, C3)
    ,(C2, C3)
    ,(C1)
    ,(C2)
    ,(C3)
    ,() )

Projekt wstępny kolumny w tym zestaw grupowanie wewnątrz pakiet ZBIORCZY ROLLUP

Następujące klauzule są równoważne:

ROLLUP(A, (C1, C2, ..., Cn) )
ROLLUP( (A), (C1, C2, ..., Cn) )
GROUPING SETS ( (A, C1, C2, ..., Cn), (A), () )

Projekt wstępny kolumny w tym zestaw grupowanie wewnątrz moduł moduł

Następujące klauzule są równoważne:

CUBE(A, (C1, C2, ..., Cn) )
CUBE( (A), (C1, C2, ..., Cn) )
GROUPING SETS ( (), (A), (C1, C2, ..., Cn), (A, C1, C2, ..., Cn) )

GROUP BY, który zawiera zestawy grupowanie, ROLLUP lub moduł

Następujące klauzule są równoważne:

GROUP BY A, CUBE (B, C)
GROUP BY GROUPING SETS ( (A), (A, B), (A, C), (A, B, C ))

Następujące klauzule są równoważne:

GROUP BY A, GROUPING SETS ( (B), (C) )
GROUP BY GROUPING SETS ( (A, B), (A, C) )

Następujące klauzule są równoważne:

GROUP BY ROLLUP (A, B), ROLLUP(C, D)
GROUP BY GROUPING SETS
    ( (),(C),(C,D),(A),(A,C),(A,C,D),(A,B),(A,B,C),(A,B,C,D) )

Dołączane do list zestawów grupowanie ROLLUP

Następujące klauzule są równoważne:

GROUP BY GROUPING SETS ( (A), ROLLUP (B, C) )
GROUP BY GROUPING SETS ( (A), (B,C), (B), () )

ROLLUP zawarte wewnątrz zestaw grupowanie

Następujące klauzule są równoważne:

GROUP BY GROUPING SETS(A, (B, ROLLUP(C, D)) )
GROUP BY GROUPING SETS (A, B, (B,C), (B, C, D) () )