group-by rollup
rollup は、グループ化されたデータの集計を作成して表示する group-by の従属句です。Rollup の出力は、クエリの列の順序に基づきます。
構文
group-by rollup の構文を次に示します。
- data_stream
- グループへのデータ入力。
- fields
- データのグループ化の基準となる項目。
rollup では、次の集計関数がサポートされています。
- average()
- count()
- min()
- max()
- sum()
- unique()
次の例では、最初に Category と Sub-Category で結果をグループ化し、それぞれの結果の行で集計関数 sum('Sales') を実行します。group-by 句を rollup で修飾すると、クエリは結果を「積み上げ集計」し、小計と総計を生成します。
| カテゴリ | サブカテゴリ | sum_sales |
|---|---|---|
| Furniture | Bookcases | 114,348 |
| Chairs | 328,237 | |
| Furnishings | 91,514 | |
| Tables | 206,966 | |
| - | 741,064 | |
| Office Supplies | Appliances | 107,532 |
| Art | 27,119 | |
| Binders | 203,413 | |
| Envelopes | 16,363 | |
| Fasteners | 3,024 | |
| Labels | 12,486 | |
| Paper | 78,479 | |
| Storage | 223,844 | |
| Supplies | 46,674 | |
| - | 718,934 | |
| Technology | Accessories | 167,380 |
| Copiers | 149,528 | |
| Machines | 189,239 | |
| Phones | 329,636 | |
| - | 835,783 | |
| - | 2,295,781 |
このクエリは最初に、指定されたカテゴリのサブカテゴリごとに総売り上げをグループ化します。次に、単一のカテゴリの総売り上げをグループ化します。各カテゴリの総売り上げが判明すると、クエリはすべてのカテゴリの総売り上げを生成します。
null 値を含む rollup
次の例は、null 値がクエリ結果にどのように表示されるかを示しています。このクエリは、最初の例のクエリと同じです。
| カテゴリ | サブカテゴリ | sum_sales |
|---|---|---|
| Furniture | Bookcases | 114,348 |
| Chairs | 328,237 | |
| Furnishings | 91,514 | |
| Tables | 206,966 | |
| - | 92 | |
| - | 741,156 | |
| Office Supplies | Appliances | 107,532 |
| Art | 27,119 | |
| Binders | 203,413 | |
| Envelopes | 16,363 | |
| Fasteners | 3,024 | |
| Labels | 12,486 | |
| Paper | 78,479 | |
| Storage | 223,844 | |
| Supplies | 46,674 | |
| - | 273 | |
| - | 719,206 | |
| Technology | Accessories | 167,380 |
| Copiers | 149,528 | |
| Machines | 189,239 | |
| Phones | 329,636 | |
| - | 259 | |
| - | 836,041 | |
| - | Computers | 113 |
| Projectors | 744 | |
| - | 562 | |
| 1,420 | ||
| 2,297,824 |
このクエリは最初に、指定されたカテゴリのサブカテゴリごとに総売り上げをグループ化します。この例では、各カテゴリに null サブカテゴリが含まれています。各サブカテゴリの総売り上げには、null サブカテゴリの値も含まれています。
クエリによってすべての名前付きカテゴリ (値を持つカテゴリ) が判明すると、null カテゴリのサブカテゴリと総売り上げが表示されます。最後に、クエリはすべてのカテゴリの総売り上げを生成します。
null 値を含む rollup と case ステートメント
grouping 関数と case ステートメントを併用して、小計および総計カテゴリにラベルを付けることができます。次の例の場合、最初の case では、Category 項目の rollup で null 値が生成されていないかを検査します。null 値が生成されている場合、クエリは項目 All Categories にラベルを付けます。2 番目の case では、Sub-Category 項目が同様に null であるかどうかを検査します。null の場合、クエリは項目 All Sub-Categories にラベルを付けます。
| カテゴリ | サブカテゴリ | sum_sales |
|---|---|---|
| Furniture | Bookcases | 114,348 |
| Chairs | 328,237 | |
| Furnishings | 91,514 | |
| Tables | 206,966 | |
| - | 92 | |
| すべてのサブカテゴリ | 741,156 | |
| Office Supplies | Appliances | 107,532 |
| Art | 27,119 | |
| Binders | 203,413 | |
| Envelopes | 16,363 | |
| Fasteners | 3,024 | |
| Labels | 12,486 | |
| Paper | 78,479 | |
| Storage | 223,844 | |
| Supplies | 46,674 | |
| - | 273 | |
| すべてのサブカテゴリ | 719,206 | |
| Technology | Accessories | 167,380 |
| Copiers | 149,528 | |
| Machines | 189,239 | |
| Phones | 329,636 | |
| - | 259 | |
| すべてのサブカテゴリ | 836,041 | |
| - | Computers | 113 |
| Projectors | 744 | |
| - | 562 | |
| すべてのサブカテゴリ | 1,420 | |
| すべてのカテゴリ | すべてのサブカテゴリ | 2,297,824 |