[SQL Miner] - ウィンドウ関数 - 合計: ロールアップ

導入:

rollup は、SQL クエリで集計データを生成するために使用される特別な操作です。小計と総計を含む結果セットを作成でき、階層レポートの生成やデータの要約に使用できます。

ロールアップ操作は group by 句で使用され、クエリ結果に複数レベルの概要データを生成します。指定された列ごとにグループ化し、さまざまなレベルで集計結果を生成します。

使用法:

ロールアップ操作の使用方法の簡単な例を次に示します。

select column1, column2, sum(value)
from table
group by rollup (column1, column2)
;

上記のクエリは、1 つの列の総計、2 つの列の小計、すべての列の総計など、複数のレベルの集計データを生成します。具体的に生成される結果セットは次のとおりです。

  • 列1と列2でグループ化されたグループごとの集計結果
  • 列 column1 の小計 (column2 を無視)
  • 列column2の小計(column1を無視)
  • すべての列の合計

ロールアップを使用すると、複数のクエリを作成したり手動で計算したりすることなく、複数のレベルの集計データを一度に取得できます。
ロールアップを使用する場合、クエリ結果の null 値は、その列に対応するレベルで利用可能なデータがないことを示すことに注意してください。

ロールアップは、特に階層レポートの生成、データの分析、または bi (ビジネス インテリジェンス) ツールでのデータの要約と分析の実行など、マルチレベルの要約のニーズに対処する便利な方法を提供します。

例:

売上データのテーブルがある場合、ロールアップを使用してさまざまなレベルで集計結果を生成できます。次の売上テーブルがあるとします。

+---------+-------+--------+
| Country | Region | Sales  |
+---------+-------+--------+
| USA     | West  | 100    |
| USA     | East  | 200    |
| USA     | North | 150    |
| Canada  | West  | 120    |
| Canada  | East  | 180    |
| Mexico  | North | 250    |
+---------+-------+--------+

次に、国、地域、全体ごとに売上を集計したいと思います。これを行うには、次のクエリを実行します。

select country, region, sum(sales)
from sales
group by rollup (country, region)
;

上記のクエリを実行すると、次の結果セットが生成されます。

+---------+-------+--------+
| Country | Region | Sales  |
+---------+-------+--------+
| Canada  | East  | 180    |
| Canada  | West  | 120    |
| Canada  | NULL  | 300    |
| Mexico  | North | 250    |
| Mexico  | NULL  | 250    |
| USA     | East  | 200    |
| USA     | North | 150    |
| USA     | West  | 100    |
| USA     | NULL  | 450    |
| NULL    | NULL  | 1000   |
+---------+-------+--------+

結果として、次のことがわかります。

  • 最下位レベルでは、各国および地域ごとの売上データが表示されます。
  • 2 番目のレベルでは、各国の小計が表示されます。
  • 最上位レベルでは、全体の合計が表示されます。

ロールアップにより、さまざまなレベルの包括的なデータを一度に取得できるため、販売データの分析と集計が容易になります。

おすすめ

転載: blog.csdn.net/qq_40249337/article/details/132049196