SQL 彙總函數可在 SELECT 查詢中直接計算統計值,搭配 ADO Recordset 即可在 ASP/VB 應用中輕鬆取得。本文說明各函數用途並提供完整 ASP 範例程式碼。
| 函數 | 用途 | 回傳型別 |
|---|---|---|
AVG(欄位) | 算術平均值 | 數值 |
COUNT(欄位) | 非 NULL 值筆數 | 整數 |
COUNT(*) | 總列數 (含 NULL) | 整數 |
MIN(欄位) | 最小值 | 同欄位型別 |
MAX(欄位) | 最大值 | 同欄位型別 |
SUM(欄位) | 總和 | 數值 |
STDEV(欄位) | 樣本標準差 | 浮點數 |
VAR(欄位) | 樣本變異數 | 浮點數 |
<%
Dim conn, rs, sqlStr
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("ntopsamp.mdb")
Set rs = Server.CreateObject("ADODB.Recordset")
' 1. 平均價格
sqlStr = "SELECT AVG(價格) AS 平均價格 FROM 產品"
rs.Open sqlStr, conn, 1, 1 ' adOpenKeyset, adLockReadOnly
Response.Write "<br>AVG: " & rs("平均價格")
rs.Close
' 2. 價格非NULL筆數
sqlStr = "SELECT COUNT(價格) AS 價格筆數 FROM 產品"
rs.Open sqlStr, conn, 1, 1
Response.Write "<br>COUNT(價格): " & rs("價格筆數")
rs.Close
' 3. 總列數
sqlStr = "SELECT COUNT(*) AS 總筆數 FROM 產品"
rs.Open sqlStr, conn, 1, 1
Response.Write "<br>COUNT(*): " & rs("總筆數")
rs.Close
' 4. 價格總和
sqlStr = "SELECT SUM(價格) AS 價格總和 FROM 產品"
rs.Open sqlStr, conn, 1, 1
Response.Write "<br>SUM: " & rs("價格總和")
rs.Close
' 5. 最低價格
sqlStr = "SELECT MIN(價格) AS 最低價格 FROM 產品"
rs.Open sqlStr, conn, 1, 1
Response.Write "<br>MIN: " & rs("最低價格")
rs.Close
' 6. 最高價格
sqlStr = "SELECT MAX(價格) AS 最高價格 FROM 產品"
rs.Open sqlStr, conn, 1, 1
Response.Write "<br>MAX: " & rs("最高價格")
rs.Close
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
AVG(價格) AS 平均價格,後續可用 rs("平均價格") 或 rs(0) 存取。AVG、SUM、MIN、MAX、STDEV、VAR 自動忽略 NULL;COUNT(欄位) 僅計非 NULL,COUNT(*) 計總列數。GROUP BY 分類欄位,查詢將回傳多列結果集,需用 Do While Not rs.EOF 迴圈讀取。Variant 型別可直接配合 Response.Write 輸出,或用 CStr/CDbl 轉型。sqlStr = "SELECT COUNT(*) AS 總筆數, AVG(價格) AS 平均價格, MIN(價格) AS 最低價, MAX(價格) AS 最高價, SUM(價格) AS 總金額 FROM 產品"
rs.Open sqlStr, conn, 1, 1
' 一次讀取所有統計值
Response.Write "總筆數:" & rs("總筆數") & " 平均:" & rs("平均價格") & " 最低:" & rs("最低價") & " 最高:" & rs("最高價") & " 總額:" & rs("總金額")
rs.Close
單次往返取得所有彙總資訊,效能最佳。
善用 SQL 彙總函數配合 ADO,能將統計計算下推至資料庫層,簡化應用程式邏輯並大幅提升效能。