【數據研發】sql - grouping的用法

 本文介紹的方法是爲配合cube一起使用

cube的使用方法

   如果我們想統計各種顏色的買了多少,並且最後合計一共買了多少,用比較笨的方法可以這樣實現:

Select Color,SUM(Quantity) AS Quantity from #T GROUP BY Color
UNION
SELECT '合計',SUM(Quantity) FROM #T

        結果:

       我們可以看到順序還有問題,還得要調整,這時候我們可以使用CUBE:

SELECT
    Color,
    SUM(Quantity) AS Quantity
FROM
    #T
GROUP BY
    Color WITH CUBE;


       結果:

       我們看到這樣就解決了上面的問題,對顏色進行了統計,同時在最後生成了合計數據,但是這裏還有一個問題,就是合計那裏顯示的NULL,這個我們可以用GROUPING函數來解決(GROUPING後續我們會再介紹):

SELECT
    CASE
        WHEN GROUPING(Color) = 1
            THEN '合計'
        ELSE
            Color
    END           Color,
    SUM(Quantity) AS Quantity
FROM
    #T
GROUP BY
    Color WITH CUBE;


       結果:

grouping的使用方法

  grouping函數用來區分NULL值,這裏NULL值有2種情況,一是原本表中的數據就爲NULL,二是由rollup、cube、grouping sets生成的NULL值。

  當爲第一種情況中的空值時,grouping(NULL)返回0;當爲第二種情況中的空值時,grouping(NULL)返回1。實例如下,從結果中可以看到第二個結果集中原本爲null的數據由於grouping函數爲1,故顯示ROLLUP-NULL字符串。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章