資料庫的 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
實際上目前 postgresql 4.4 的版本上也沒有 CUBE 這樣的功能。
目前應該還只是一個 patch
http://wiki.postgresql.org/wiki/Grouping_Sets
http://archives.postgresql.org/pgsql-hackers/2010-08/msg00647.php
如有誤請不吝指教
我對 postgresql 沒研究得那麼深, 感謝指點. 🙂