一張圖讓你詳細理解Group By的分組聚合過程
05-18
一張圖讓你詳細理解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,聚合函數執行完成後,把返回的值交給分組的欄位,組合成一行記錄,資料庫等待所有的分組都執行完成,把數據組合起來,返回給我們。 這個就是整個分組聚合的過程,如果你覺得還是不能理解,那麼在本文下面回復吧。
推薦閱讀:
※sqlzoo練習
※mysql表中查找和小於某個數的所有最前面的記錄?
※《基於oracle學習SQL語言》學習筆記——第三章 單行函數
※SQL學習
※SQL優化器原理 - Auto Hash Join
TAG:SQL |