1. 程式人生 > >關於sql當中的group by 和partition by 的區別。

關於sql當中的group by 和partition by 的區別。

的區別 輸出 sel color 輸出類型 區別 inf col code

今天在做一個實驗的時候碰到了關於group by 和partition by 的區別,簡單的總結一下。

實驗的題目是,按照類型進行分組,然後對其金額進行累加。然後輸出類型對應的金額總和:

    SELECT TRANS_TYPE, SUM(TRANS_AMT) FROM UTTDB.UTT_TRANS_LOG GROUP BY TRANS_TYPE

技術分享圖片

這個輸出的結果是按照不同的交易類型,然後對金額進行累加。

SELECT
    TRANS_TYPE,
    SUM(TRANS_AMT) OVER (PARTITION BY TRANS_TYPE ) AS sumcount
FROM
    UTTDB.UTT_TRANS_LOG

這個是用 PARTITION BY進行分組,然後統計。他的運行結果如下:

技術分享圖片

我們可以看出他是對數據進行分組,然後累加求和,但是他不會去重,會把這個字段的所有的值都顯示出來。

綜上的這樣額結果,group by 會分組統計,然後對字段的值去重操作。只顯示唯一的類型。

而對於partition by 來說的話,他只是對要分組的字段分組,然後累加出來,對前面類型字段並不統一去重。

關於sql當中的group by 和partition by 的區別。