?? 11-3.cfm.htm
字號(hào):
<html>
<head>
<title>集合函數(shù)</title>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0">
</head>
<body>
<font FACE="宋體" SIZE="5"><b>
<p ALIGN="JUSTIFY">集合函數(shù)</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">到現(xiàn)在為止,你只學(xué)習(xí)了如何根據(jù)特定的條件從表中取出一條或多條記錄。但是,假如你想對(duì)一個(gè)表中的記錄進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。例如,如果你想統(tǒng)計(jì)存儲(chǔ)在表中的一次民意測(cè)驗(yàn)的投票結(jié)果。或者你想知道一個(gè)訪問者在你的站點(diǎn)上平均花費(fèi)了多少時(shí)間。要對(duì)表中的任何類型的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),都需要使用集合函數(shù)。</p>
<p ALIGN="JUSTIFY">Microsoft SQL
支持五種類型的集合函數(shù)。你可以統(tǒng)計(jì)記錄數(shù)目,平均值,最小值,最大值,或者求和。當(dāng)你使用一個(gè)集合函數(shù)時(shí),它只返回一個(gè)數(shù),該數(shù)值代表這幾個(gè)統(tǒng)計(jì)值之一。</p>
<p ALIGN="JUSTIFY">注意</p>
<p ALIGN="JUSTIFY">要在你的ASP網(wǎng)頁中使用集合函數(shù)的返回值,你需要給該值起一個(gè)名字。要作到這一點(diǎn),你可以在SELECT語句中,在集合函數(shù)后面緊跟一個(gè)字段名,如下例所示:</p>
<p ALIGN="JUSTIFY">SELECT AVG(vote) </font><font SIZE="3">‘</font><font FACE="宋體"
SIZE="3">the_average</font><font SIZE="3">’</font><font FACE="宋體" SIZE="3"> FROM
opinion</p>
<p ALIGN="JUSTIFY">在這個(gè)例子中,vote的平均值被命名為 the_average。現(xiàn)在你可以在你的ASP網(wǎng)頁的數(shù)據(jù)庫方法中使用這個(gè)名字。</p>
</font><font FACE="宋體"><b>
<p ALIGN="JUSTIFY">統(tǒng)計(jì)字段值的數(shù)目</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">函數(shù)COUNT()也許是最有用的集合函數(shù)。你可以用這個(gè)函數(shù)來統(tǒng)計(jì)一個(gè)表中有多少條記錄。這里有一個(gè)例子:</p>
<p ALIGN="JUSTIFY">SELECT COUNT(au_lname) FROM authors</p>
<p ALIGN="JUSTIFY">這個(gè)例子計(jì)算表authors中名字(last name)的數(shù)目。如果相同的名字出現(xiàn)了不止一次,該名字將會(huì)被計(jì)算多次。如果你想知道名字為某個(gè)特定值的作者有多少個(gè),你可以使用WHERE子句,如下例所示:</p>
<p ALIGN="JUSTIFY">SELECT COUNT(au_lname) FROM authors WHERE au_lname=</font><font
SIZE="3">’</font><font FACE="宋體" SIZE="3">Ringer</font><font SIZE="3">’</p>
</font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">這個(gè)例子返回名字為</font><font SIZE="3">’</font><font
FACE="宋體" SIZE="3">Ringer</font><font SIZE="3">’</font><font FACE="宋體" SIZE="3">的作者的數(shù)目。如果這個(gè)名字在表authors中出現(xiàn)了兩次,則次函數(shù)的返回值是2。</p>
<p ALIGN="JUSTIFY">假如你想知道有不同名字的作者的數(shù)目。你可以通過使用關(guān)鍵字DISTINCT來得到該數(shù)目。如下例所示:</p>
<p ALIGN="JUSTIFY">SELECT COUNT(DISTINCT au_lname) FROM authors</p>
<p ALIGN="JUSTIFY">如果名字</font><font SIZE="3">’</font><font FACE="宋體"
SIZE="3">Ringer</font><font SIZE="3">’</font><font FACE="宋體" SIZE="3">出現(xiàn)了不止一次,它將只被計(jì)算一次。關(guān)鍵字DISTINCT
決定了只有互不相同的值才被計(jì)算。</p>
<p ALIGN="JUSTIFY">通常,當(dāng)你使用COUNT()時(shí),字段中的空值將被忽略。一般來說,這正是你所希望的。但是,如果你僅僅想知道表中記錄的數(shù)目,那么你需要計(jì)算表中所有的記錄─不管它是否包含空值。下面是一個(gè)如何做到這一點(diǎn)的例子:</p>
<p ALIGN="JUSTIFY">SELECT COUNT(*) FROM authors</p>
<p ALIGN="JUSTIFY">注意函數(shù)COUNT()沒有指定任何字段。這個(gè)語句計(jì)算表中所有記錄所數(shù)目,包括有空值的記錄。因此,你不需要指定要被計(jì)算的特定字段。</p>
<p ALIGN="JUSTIFY">函數(shù)COUNT()在很多不同情況下是有用的。例如,假設(shè)有一個(gè)表保存了對(duì)你站點(diǎn)的質(zhì)量進(jìn)行民意調(diào)查的結(jié)果。這個(gè)表有一個(gè)名為vote的字段,該字段的值要么是0,要么是1。0表示反對(duì)票,1表示贊成票。要確定贊成票的數(shù)量,你可以所有下面的SELECT
語句:</p>
<p ALIGN="JUSTIFY">SELECT COUNT(vote) FROM opinion_table WHERE vote=1</p>
</font><font FACE="宋體"><b>
<p ALIGN="JUSTIFY">計(jì)算字段的平均值</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">使用函數(shù)COUNT(),你可以統(tǒng)計(jì)一個(gè)字段中有多少個(gè)值。但有時(shí)你需要計(jì)算這些值的平均值。使用函數(shù)AVG(),你可以返回一個(gè)字段中所有值的平均值。</p>
<p ALIGN="JUSTIFY">假如你對(duì)你的站點(diǎn)進(jìn)行一次較為復(fù)雜的民意調(diào)查。訪問者可以在1到10之間投票,表示他們喜歡你站點(diǎn)的程度。你把投票結(jié)果保存在名為vote的INT型字段中。要計(jì)算你的用戶投票的平均值,你需要使用函數(shù)AVG():</p>
<p ALIGN="JUSTIFY">SELECT AVG(vote) FROM opinion</p>
<p ALIGN="JUSTIFY">這個(gè)SELECT語句的返回值代表用戶對(duì)你站點(diǎn)的平均喜歡程度。函數(shù)AVG()只能對(duì)數(shù)值型字段使用。這個(gè)函數(shù)在計(jì)算平均值時(shí)也忽略空值。</p>
</font><font FACE="宋體"><b>
<p ALIGN="JUSTIFY">計(jì)算字段值的和</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">假設(shè)你的站點(diǎn)被用來出售卡片,已經(jīng)運(yùn)行了兩個(gè)月,是該計(jì)算賺了多少錢的時(shí)候了。假設(shè)有一個(gè)名為orders的表用來記錄所有訪問者的定購信息。要計(jì)算所有定購量的總和,你可以使用函數(shù)SUM():</p>
<p ALIGN="JUSTIFY">SELECT SUM(purchase_amount) FROM orders</p>
<p ALIGN="JUSTIFY">函數(shù)SUM()的返回值代表字段purchase_amount中所有值的平均值。字段purchase_amount的數(shù)據(jù)類型也許是MONEY型,但你也可以對(duì)其它數(shù)值型字段使用函數(shù)SUM()。</p>
</font><font FACE="宋體"><b>
<p ALIGN="JUSTIFY">返回最大值或最小值</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">再一次假設(shè)你有一個(gè)表用來保存對(duì)你的站點(diǎn)進(jìn)行民意調(diào)查的結(jié)果。訪問者可以選擇從1到10
的值來表示他們對(duì)你站點(diǎn)的評(píng)價(jià)。如果你想知道訪問者對(duì)你站點(diǎn)的最高評(píng)價(jià),你可以使用如下的語句:</p>
<p ALIGN="JUSTIFY">SELECT MAX(vote) FROM opinion</p>
<p ALIGN="JUSTIFY">你也許希望有人對(duì)你的站點(diǎn)給予了很高的評(píng)價(jià)。通過函數(shù)MAX(),你可以知道一個(gè)數(shù)值型字段的所有值中的最大值。如果有人對(duì)你的站點(diǎn)投了數(shù)字10,函數(shù)MAX()將返回該值。</p>
<p ALIGN="JUSTIFY">另一方面,假如你想知道訪問者對(duì)你站點(diǎn)的的最低評(píng)價(jià),你可以使用函數(shù)MIN(),如下例所示:</p>
<p ALIGN="JUSTIFY">SELECT MIN(vote) FROM opinion</p>
<p ALIGN="JUSTIFY">函數(shù)MIN()返回一個(gè)字段的所有值中的最小值。如果字段是空的,函數(shù)MIN()返回空值。</p>
</font>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -