程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 在數據庫中 如何進行分類分組並總計SQL信息

在數據庫中 如何進行分類分組並總計SQL信息

編輯:關於PHP編程

您需要了解如何使用某些SQL子句和運算符來安排SQL數據,從而對它進行高效分析。下面這些建議告訴您如何建立語句,獲得您希望的結果。
以有意義的方式安排數據可能是一種挑戰。有時您只需進行簡單分類。通常您必須進行更多處理——進行分組以利於分析與總計。可喜的是,SQL提供了大量用於分類、分組和總計的子句及運算符。下面的建議將有助於您了解何時進行分類、何時分組、何時及如何進行總計。欲了解每個子句和運算符的詳細信息,請查看在線書籍。
#1:分類排序
通常,我們確實需要對所有數據進行排序。SQL的ORDER BY子句將數據按字母或數字順序進行排列。因此,同類數據明顯分類到各個組中。然而,這些組只是分類的結果,它們並不是真正的組。ORDER BY顯示每一個記錄,而一個組可能代表多個記錄。
#2:減少組中的相似數據
分類與分組的最大不同在於:分類數據顯示(任何限定標准內的)所有記錄,而分組數據不顯示這些記錄。GROUP BY子句減少一個記錄中的相似數據。例如,GROUP BY能夠從重復那些值的源文件中返回一個唯一的郵政編碼列表:
SELECT ZIP
FROM Customers
GROUP BY ZIP
僅包括那些在GROUP BY和SELECT列列表中字義組的列。換句話說,SELECT列表必須與GROUP列表相匹配。只有一種情況例外:SELECT列表能夠包含聚合函數。(而GROUP BY不支持聚合函數。)
記住,GROUP BY不會對作為結果產生的組分類。要對組按字母或數字順序排序,增加一個ORDER BY子句(#1)。另外,在GROUP BY子句中您不能引用一個有別名的域。組列必須在根本數據中,但它們不必出現在結果中。
#3:分組前限定數據
您可以增加一個WHERE子句限定由GROUP BY分組的數據。例如,下面的語句僅返回肯塔基地區顧客的郵政編碼列表。
SELECT ZIP
FROM Customers
WHERE State = 'KY'
GROUP BY ZIP
在GROUP BY子句求數據的值之前,WHERE對數據進行過濾,記住這一點很重要。
和GROUP BY一樣,WHERE不支持聚合函數。
#4:返回所有組
當您用WHERE過濾數據時,得到的組只顯示那些您指定的記錄。符合組定義但不滿足子句條件的數據將不會出現在組中。不管WHERE條件如何,如果您想包括所有數據,增加一個ALL子句。例如,在前面的語句中增加一個ALL子句會返回所有郵政編碼組,而不僅僅是肯塔基地區的組。
SELECT ZIP

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved