使用CUBE和ROLLUP對數據進行彙總

  想要找一個既快捷又有效的方法來對您存儲在數據庫裏的數據進行彙總分析嗎?SQL語言中的ROLLUP和CUBE命令提供了一個很是有用的工具,可讓您快速深刻地獲取數據的各類內在性質。ROLLUP和CUBE是SQL的擴展命令,能夠在SQL Server 6.5(及以上版本)和Oracle 8i(及以上版本)中使用。   本文會爲你們介紹如何將CUBE命令加載到SQL當中。咱們將以北京的一家寵物超市的貨源供應鏈爲例,假設其數據表中包含了寵物商店供應鏈中有貨源的寵物數量和類型:   表Pets Type Store Number 狗 山東 12 貓 山東 18 龜 天津 4 狗 天津 14 貓 蒙古 9 狗 內蒙古 5 龜 內蒙古 1   做爲這家寵物超市的老闆,咱們但願可以迅速瞭解關於存貨各個方面的狀況。咱們能夠僱一個SQL程序員,編寫一些查詢命令好得到咱們須要的確切數據。還好,咱們的數據集不是很大,因此咱們能夠興致勃勃地站在一旁查看這些原始數據。使用CUBE命令就可以切實知足咱們對數據的渴求。如下就是相應的SQL實例:   SELECT Type, Store, SUM(Number) as Number   FROM Pets   GROUP BY type,store   WITH CUBE   執行該查詢返回的結果以下: Type Store Number 貓 山東 18 貓 內蒙古 9 貓 NULL 27 狗 山東 12 狗 內蒙古 5 狗 天津 14 狗 NULL 31 龜 內蒙古 1 龜 天津 4 龜 NULL 5 NULL NULL 63 NULL 山東 30 NULL 內蒙古 15 NULL 天津 18   一會兒多出了這麼多的數據!請注意表中出現了不少額外的分組包括NULL行,這些毫不會出如今標準的GROUP BY命令所返回的結果中。它們都是CUBE指令所添加的彙總項。分析上面的結果數據,你會發現咱們的供應鏈上還有27只貓、31只狗和5只龜,由三個不一樣地區的商店提供。山東店庫存裏的寵物數量最多,包含了目錄裏的30只寵物。   咱們對每一個地區店的寵物總數並非很感興趣,咱們只是要一個包含每種類型寵物的來源及其總數的數據。使用ROLLUP 操做符代替CUBE 操做符就能排除掉那些在第一列包含了NULL 的結果數據。   SQL語法以下:   SELECT Type, Store, SUM(Number) as Number   FROM Pets   GROUP BY type,store   WITH ROLLUP   結果以下: Type Store Number 貓 山東 18 貓 內蒙古 9 貓 NULL 27 狗 山東 12 狗 內蒙古 5 狗 天津 14 狗 NULL 31 龜 內蒙古 1 龜 天津 4 龜 NULL 5 NULL NULL 63   以上是對CUBE和ROLLUP的一個簡單介紹。 
相關文章
相關標籤/搜索