資料庫的 CUBE / ROLLUP 用法

資料庫的 CUBE / ROLLUP 這兩種參數, 之前都沒用過, 之前跟人聊到才知道, 聽說在 Data Warehouse 很常用.

在此也沒做很深入的研究, 先把當初對話內容做的筆記, 有用到時再來翻~

CUBE / ROLLUP 範例

CUBE 的作用(通常會搭配 GROUP BY 一起用)

  • 範例: GROUP BY(A, B, C) WITH CUBE
  • 結果: 先做GROUP BY(A, B, C), 再做 (A,B), 再做 (A), 接下來(B,C) (B) (C)

ROLLUP 和 CUBE 差異?

  • ROLLUP 沒做排列組合, 只做GROUP BY(A, B, C), 再做 (A,B), 再做 (A)
  • 註: ROLLUP 沒做(B,C)  (B) (C)

資料庫 的 CUBE / ROLLUP 支援度

  • MySQL 目前只支援 ROLLUP: MySQL GROUP BY Modifiers
  • 用法: SELECT year, SUM(profit) FROM sales GROUP BY year WITH ROLLUP

想用 CUBE 可以考慮 PostgreSQL: PostgreSQL 8.4rc1 Documentation CUBE


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note。將永久鏈結加入書籤。

資料庫的 CUBE / ROLLUP 用法 有 2 則回應

  1. cofemei 說道:

    實際上目前 postgresql 4.4 的版本上也沒有 CUBE 這樣的功能。
    目前應該還只是一個 patch
    http://wiki.postgresql.org/wiki/Grouping_Sets
    http://archives.postgresql.org/pgsql-hackers/2010-08/msg00647.php
    如有誤請不吝指教

  2. Tsung 說道:

    我對 postgresql 沒研究得那麼深, 感謝指點. 🙂

發表迴響