1。使用排序使資料有序
通常,你的所有資料真正需要的僅僅是按某種順序排列。SQL的ORDER BY語句可以以字母或數字順序組織資料。因此,相似的值按組排序在一起。然而,這個分組時排序的結果,並不是真的分組。ORDER BY顯示每條記錄而分組可能代表很多記錄。
2。進行分組除去重複值
排序和分組之間的最大區別是:排序的資料顯示所有記錄(在限定標準範圍之內),而分組資料不是顯示所有記錄。GROUP BY語句對於同樣的值只顯示一條記錄。例如,下面的語句中的GROUP BY語句對資料來源中重複出現的資料只返回唯一的zip編碼列。
SELECT ZIP FROM Customers GROUP BY ZIP
只包括由GROUP BY和SELECT語句共同定義的那些記錄,換句話說,SELECT列表必須滿足GROUP BY列表,但是有一個例外就是SELECT列表可以包含聚合函式(GROUP BY語句不允許使用聚合函式)。
需要注意的是GROUP BY語句不會對結果分組進行排序。為了使分組按字母或數字有序排列,需要新增ORDER BY語句。此外,在GROUP BY語句中不能引用使用了別名的欄位。分組欄目必須是潛在的資料,但它們並不需要顯示在結果中。
3。在分組之前進行資料篩選
你可以新增一個WHERE語句來篩選有GROUP BY所得分組中的資料。
例如,下面的語句只返回肯塔基州顧客的唯一ZIP編碼列。
SELECT ZIP FROM CustomersWHEREState = ’KY’ GROUP BY ZIP
必須注意的是WHERE語句是在GROUP BY語句求值之前進行資料過濾的。
與GROUP BY語句一樣,WHERE語句也不支援聚合函式。
4。返回所有分組
當你使用WHERE語句過濾資料時,結果分組中只顯示你指定的那些記錄,而符合分組定義但是不滿足過濾條件的資料不會包含在某個分組中。當你想在分組中包含所有資料時新增關鍵字ALL即可,這時WHERE條件就不起作用。
例如,在前面的例子中新增關鍵字ALL就會返回所有的ZIP分組,而不是僅在肯塔基州的那些。
1。使用排序使資料有序
通常,你的所有資料真正需要的僅僅是按某種順序排列。SQL的ORDER BY語句可以以字母或數字順序組織資料。因此,相似的值按組排序在一起。然而,這個分組時排序的結果,並不是真的分組。ORDER BY顯示每條記錄而分組可能代表很多記錄。
2。進行分組除去重複值
排序和分組之間的最大區別是:排序的資料顯示所有記錄(在限定標準範圍之內),而分組資料不是顯示所有記錄。GROUP BY語句對於同樣的值只顯示一條記錄。例如,下面的語句中的GROUP BY語句對資料來源中重複出現的資料只返回唯一的zip編碼列。
SELECT ZIP FROM Customers GROUP BY ZIP
只包括由GROUP BY和SELECT語句共同定義的那些記錄,換句話說,SELECT列表必須滿足GROUP BY列表,但是有一個例外就是SELECT列表可以包含聚合函式(GROUP BY語句不允許使用聚合函式)。
需要注意的是GROUP BY語句不會對結果分組進行排序。為了使分組按字母或數字有序排列,需要新增ORDER BY語句。此外,在GROUP BY語句中不能引用使用了別名的欄位。分組欄目必須是潛在的資料,但它們並不需要顯示在結果中。
3。在分組之前進行資料篩選
你可以新增一個WHERE語句來篩選有GROUP BY所得分組中的資料。
例如,下面的語句只返回肯塔基州顧客的唯一ZIP編碼列。
SELECT ZIP FROM CustomersWHEREState = ’KY’ GROUP BY ZIP
必須注意的是WHERE語句是在GROUP BY語句求值之前進行資料過濾的。
與GROUP BY語句一樣,WHERE語句也不支援聚合函式。
4。返回所有分組
當你使用WHERE語句過濾資料時,結果分組中只顯示你指定的那些記錄,而符合分組定義但是不滿足過濾條件的資料不會包含在某個分組中。當你想在分組中包含所有資料時新增關鍵字ALL即可,這時WHERE條件就不起作用。
例如,在前面的例子中新增關鍵字ALL就會返回所有的ZIP分組,而不是僅在肯塔基州的那些。