天天看點

玩轉資料庫之 Group by Grouping

有的時候我們要從資料庫裡把資料組織成樹結構再展現到頁面上

像下面這樣

玩轉資料庫之 Group by Grouping

今天我們用Group 和Grouping實作它,并總結一下它倆。

先看一下概念,再用代碼一點一點去了解它們,最後我會給出完整的代碼

Group By : 語句用于結合合計函數,根據一個或多個列對結果集進行分組。

Grouping :訓示是否聚合 GROUP BY 清單中的指定清單達式。 在結果集中,如果 GROUPING 傳回 1 則訓示聚合;

                傳回 0 則訓示不聚合。 如果指定了 GROUP BY,則 GROUPING 隻能用在 SELECT <select> 清單、HAVING 和 ORDER BY 子句中。

ROLLUP :生成簡單的 GROUP BY 聚合行以及小計行或超聚合行,還生成一個總計行。

讓我們先建一個資料庫,并添加一些資料

看一下它們的資料

玩轉資料庫之 Group by Grouping

我們把它們用Group By分一下組

玩轉資料庫之 Group by Grouping

我們看到這樣和沒有分組時展現的資料是一樣的,讓我們加上 ROLLUP 加上合計行

玩轉資料庫之 Group by Grouping

我們看到了好多NULL資料,而且很有規律

這些規律我們可以用Grouping 看到

玩轉資料庫之 Group by Grouping

 你會發現那些Null值就是Grouping 為1的時候

最後一行的合計是Categrory_ID的,我們不需要,CategoryID的合計我們也不需要我們要怎麼去掉它們呢,在having 裡

玩轉資料庫之 Group by Grouping

這樣的結果 我們看到隻有Product_Name的Grouping有為1 了

我們就是用它去實作這棵樹

玩轉資料庫之 Group by Grouping

下面是完整的代碼