ロールアップ

Barbara Streisand
Barbara Streisandオリジナル
2024-11-19 18:20:03765ブラウズ

ロールアップ

SQL での ロールアップ 関数の使用を理解する

ロールアップ 関数は、集計クエリで小計と総計を生成できる SQL の強力なツールです。この機能は、さまざまな詳細レベルで統合値を計算する必要があるレポートや分析に特に役立ちます。


ロールアップとは何ですか?

ロールアップ 関数は、GROUP BY 句と組み合わせて使用​​され、階層グループを作成します。小計 (部分合計) と総計を表す行がクエリの最後に自動的に追加されます。

基本的な構文

SELECT column1, column2, aggregation(column3)
FROM table
GROUP BY ロールアップ(column1, column2);

仕組みは?

  • ロールアップ は、GROUP BY 句で指定された列を階層順に処理します。
  • まず、より詳細なレベルごとにすべての値をグループ化し、その後、徐々に詳細度の低いレベルに移動します。
  • 最後に、総計の行を追加します。

実践例

上記のコードで作成した製品テーブルを操作してみましょう。このテーブルには、製品とそのカテゴリに関する情報が含まれています。

1. 通常のクエリ

カテゴリによるグループ化のみをクエリすると、次の結果が得られます:

SELECT product_category, SUM(product_value) AS total
FROM products
GROUP BY product_category;

結果:

Category Total
clothing 40.48
food 6.97

2. ロールアップ によるクエリ

ロールアップ 関数を追加すると、小計と総計が含まれます。

SELECT CASE
         WHEN product_category IS NULL THEN 'Grand Total'
         ELSE product_category
       END AS category,
       SUM(product_value) AS total
FROM products
GROUP BY ロールアップ(product_category);

結果:

カテゴリ 合計 服装 40.48 食べ物 6.97
Category Total
clothing 40.48
food 6.97
Grand Total 47.45
総計 47.45

3. 複数レベルの小計


さらに進んで、複数のレベルで小計を計算できます。たとえば、カテゴリおよび製品ごとに小計を計算するには:

SELECT CASE
         WHEN product_category IS NULL AND product_name IS NULL THEN 'Grand Total'
         WHEN product_name IS NULL THEN 'Subtotal - ' || product_category
         ELSE product_name
       END AS description,
       SUM(product_value) AS total
FROM products
GROUP BY ロールアップ(product_category, product_name);

結果:

Description Total
T-shirt 10.99
Shorts 8.99
Shoes 20.50
Subtotal - clothing 40.48
Rice 1.99
Popcorn 0.99
Filet Steak 3.99
Subtotal - food 6.97
Grand Total 47.45
説明 合計 T シャツ 10.99 ショートパンツ 8.99 靴 20.50 小計 - 衣類 40.48 米 1.99 ポップコーン 0.99 フィレステーキ 3.99 小計 - 食品 6.97 総計 47.45 テーブル>

ロールアップ をいつ使用するか?

  • 統合概要を必要とするレポート。
  • 追加のクエリを作成することなく、合計計算の自動化が必要なシナリオ
  • さまざまな粒度レベルでの分析が必要な階層データ。

ロールアップ 関数を使用すると、複雑なレポートの作成が簡素化され、手動操作の必要性が減ります。この機能は、Oracle、SQL Server、MySQL などの多くのデータベースでサポートされています。これを使用すると、クエリがより効率的になり、レポートがより動的になります。 ?

以上がロールアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。