2014-01-18 194 views
1

使用GROUP BY當我們做出這樣的SQL請求:對於一些聚合函數爲什麼我們在SQL

SELECT attr1, attr2, AGGR(*) 
    FROM SomeTable 
GROUP BY attr1, attr2 

,我們必須包括一個GROUP BY子句和列表attR1和attR2位在裏面。我的問題是:爲什麼SQL數據庫管理系統本身不這樣做?

+5

我不知道你在問什麼。 –

+0

1)逗號! 2)它如何知道使用哪個字段? –

+0

谷歌將爲您提供更好的答案我認爲 –

回答

2

因爲你可以通過attr1希望集團,attr2attr3,即使你在實際attr3值本身沒有興趣。

換句話說,您可能需要按非合併列進行分組,但這只是最低限度。沒有什麼能夠阻止你按照查詢中實際包含的列進行分組。

而且,由於查詢評估者不知道你想要什麼(或者它希望你遵循相關的標準),它可能認爲要堅持你明確地聲明它是安全的。

0

你可以用GROUP BY做到這一點,那麼你可以從整個表中獲得平均值。 與GROUP BY,你得到每個組的平均值。

+1

我不確定標準sql是否真的允許像這樣的查詢沒有分組 – user1455836

0

因爲sql中有兩個函數類型 - 單個函數&組函數。如果你想訪問組數據,那麼你必須調用'按組'功能類型。

例如,假設您有一個包含'deptno'列的組織的表。現在,如果你想要統計每個部門的'沒有員工'。然後通過deptno調用count(*).... group。 結果將顯示每個組中的員工數量。

0

GROUP BY語句與聚合函數一起使用,以按一個或多個列對結果集進行分組。