2015.08.26
Ted Holt 著

ロールアップする2つの方法

Three Powerful SQL Words では、グループ化列のサブセット上で集合値を持つ要約照会を機能強化する方法をお見せしました。今日は、2 つのロールアップ構文を紹介して、その違いを図示しながらディスカッションを続けたいと思います。

まず、会計取引の表があるとします。

技術情報01

お馴染みの GROUP BY 節を使った一般的な要約照会を以下に示します。

技術情報02

amount 列は2つの列 department と account でまとめています。
集合の合計を追加するのは簡単で、WITH ROLLUP を追加するだけです。

技術情報03

これで、部門の合計と総計が計算されます。
同じ内容を実行する、別の形式のロールアップを以下に示します。

技術情報04

これが別の形式と同じぐらい良い形式ですか?
以下の照会を考えてみましょう。

技術情報05

アカウントの集合はありますが、部門の集合はない点に注意してください。
別のパターンを以下に示します。

技術情報06

department の集合の数字はありますが、account の数字はありません。
最後の例を考えてみましょう。

技術情報07

department 別の合計、account 別の合計、および総計があります。これは WITH CUBE と同等です。

GROUP BY ROLLUP と WITH ROLLUP のどの形式が良いでしょうか? おそらく、以下の 2 つの理由で GROUP BY ROLLUP でしょう。

  1. 私が言えることは、GROUP BY ROLLUP の方が WITH ROLLUP より標準的で、リレーショナル データベースの世界全体で良く知られているようです。
  2. GROUP BY ROLLUP 構文により、WITH ROLLUP ではできない結果セットを生成できます。

こうした理由から、もっと時間をかけて GROUP BY ROLLUP 構文のニュアンスをマスターしようと思っています。

ページトップ

ボタン