1. 程式人生 > >一張圖讓你詳細理解Group By的分組聚合過程

一張圖讓你詳細理解Group By的分組聚合過程

Group By分組聚合是我們在使用過程中使用最多的SQL之一(另外一個使用最多的估計就是JOIN了吧),為了讓大家詳細瞭解Group By的計算執行過程,我們下面使用一張圖來詳細講解一下。 我們的資料就是左表,有name和score兩列,我們要求每個name下,score的最大值,技術術語是:根據每個name進行分組,根據max函式進行聚合(我們和別人交流的時候,記得要這樣子說)。 Group by語句先會根據每個name進行分組,把每個name對應的score都放到一個地方,如中間的表格所示。例如,name為b的行,有三個對應的score,其他類推,每個資料庫都會做好這一步的準備,也就是Group By操作執行之後,這個中間的資料體就會存在了,它等待著我們呼叫聚合函式去統計它。
然後,我們的聚合函式要呼叫的是:max,也就是從一堆資料中,取出最大值的函式。聚合函式還有其他值,例如和最大值max對應的最小值min,求和sum等等,所有這些聚合函式,都是針對一個數組進行處理的,所謂的資料,就是b裡面那三個值。 yes,有了中間那個資料體,我們就可以非常簡單地理解所謂的聚合函數了。OK,聚合函式執行完成後,把返回的值交給分組的欄位,組合成一行記錄,資料庫等待所有的分組都執行完成,把資料組合起來,返回給我們。 這個就是整個分組聚合的過程,如果你覺得還是不能理解,那麼在本文下面回覆吧。