2014-01-16 142 views
0

我想弄清楚Google BigQuery在聚合和分組方面的工作方式。我閱讀了文檔,它說GROUP BY爲:BigQuery和GROUP BY子句

GROUP BY子句允許您將給定字段值相同的值爲 的行分組。然後,您可以在組中的每個 上執行聚合函數。在 SELECT子句中的任何選擇或聚合之後發生分組。

所以它說,分組後,我可以執行聚合函數(我認爲這是像COUNT的函數)。但是,後面的句子表明,分組發生在SELECT子句中的任何選擇或聚合之後。

所以,如果我有

SELECT f1, COUNT(f2) 
    FROM ds.Table 
    GROUP BY f1; 

哪個最先發生分組或計數?

+1

試圖理解問題的目標:如果它是一個或另一個,會有什麼不同? –

+0

@fh好的重點是瞭解查詢的工作原理......我實際上並不知道如果它在羣組之前進行聚合,它實際上不知道它是如何工作的,但是這正是它在文檔中所說的。所以我希望有人能解釋這一點。而且因爲你在Google開發者關係團隊中,所以你似乎是這個問題的完美人選:) – markovuksanovic

+0

我明白你的意思了。雖然我們在內部審閱文檔,但請放心,在這種情況下,BigQuery確實是唯一理智的事情。感謝您的反饋! –

回答

1

您將擁有該組,然後計數。在你的情況下,你會得到每一個f1,然後計數一行。然而,如果你想做一些有趣的事情,你可以使用窗口函數,首先你可以按照某些字段進行分組,然後你可以對結果行執行函數,這很方便。

查看bigquery在線文檔的窗口功能部分,查看幾個示例。