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

原文鏈接:http://www.datastudy.cc/to/58


Group By分組聚合是我們在使用過程中使用最多的SQL之一(另外一個使用最多的估計就是JOIN了吧),爲了讓大家詳細瞭解Group By的計算執行過程,我們下面使用一張圖來詳細講解一下。

0.jpg

我們的數據就是左表,有name和score兩列,我們要求每個name下,score的最大值,技術術語是:根據每個name進行分組,根據max函數進行聚合(我們和別人交流的時候,記得要這樣子說)。

Group by語句先會根據每個name進行分組,把每個name對應的score都放到一個地方,如中間的表格所示。例如,name爲b的行,有三個對應的score,其他類推,每個數據庫都會做好這一步的準備,也就是Group By操作執行之後,這個中間的數據體就會存在了,它等待着我們調用聚合函數去統計它。

然後,我們的聚合函數要調用的是:max,也就是從一堆數據中,取出最大值的函數。聚合函數還有其他值,例如和最大值max對應的最小值min,求和sum等等,所有這些聚合函數,都是針對一個數組進行處理的,所謂的數據,就是b裏面那三個值。

yes,有了中間那個數據體,我們就可以非常簡單地理解所謂的聚合函數了。OK,聚合函數執行完成後,把返回的值交給分組的字段,組合成一行記錄,數據庫等待所有的分組都執行完成,把數據組合起來,返回給我們。

這個就是整個分組聚合的過程,如果你覺得還是不能理解,那麼在本文下面回覆吧。


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