使用sql函數,您可以在一個select語句的查詢當中,直接計算數據庫資料的平均值、總數、最小值、最大值、總和、標准差、變異數等統計。使用recordset對象時,也可使用這些sql函數。
sql函數包括如下:
avg函數:計算查詢中某一特定字段資料的算術平均值。
count函數:計算符合查詢條件的記錄數。
min, max函數:傳回指定字段之中符合查詢條件的第一條、最末條記錄的資料。
first, last函數:傳回指定字段之中符合查詢條件的最小值、最大值。
stdev函數:計算指定字段之中符合查詢條件的標准差。
sum函數:計算指定字段之中符合查詢條件的資料總和。
var,函數:計算指定字段之中符合查詢條件的變異數估計值。
ado如何使用sql函數呢?
詳細描述如下: avg函數 avg函數,計算查詢中某一特定字段資料的算術平均值。
語法為avg(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
avg函數在計算時,不包含任何值為 null 的資料。
count函數
count函數,計算符合查詢條件的記錄條數。
語法為count (運算式)。運算式,可為字段名稱、*、多個字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
count 函數於計算時,不包含任何值為 null 的資料。
但是,count(*) 則計算所有符合查詢條件的記錄條數,包含那些null的資料。
如果count(字段名稱) 的字段名稱為多個字段,將字段名稱之間使用 & 分隔。
多個字段當中,至少有一個字段的值不為null的情況下,count函數才會計算為一條記錄。如果多個字段都為null,則不算是一條記錄。譬如:
select count(價格 & 代號) from 產品
first/last函數
first函數、last函數,傳回指定字段之中符合查詢條件的第一條、最末條記錄的資料。
語法為first(運算式) 和 last(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
min/max函數
min函數、max函數,傳回指定字段之中符合查詢條件的最小值、最大值。
語法為min(運算式) 和 max(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
stdev函數
stdev函數,計算指定字段之中符合查詢條件的標准差。
語法為stdev(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
如果符合查詢條件的記錄為兩個以下時,stdev函數將傳回一個null 值,該表示不能計算標准差。
sum函數
sum函數,計算指定字段之中符合查詢條件的資料總和。
語法為sum(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
sum函數可使用兩個字段資料運算式,譬如計算產品的單價及數量字段的合計:
select sum(單價 * 數量) from 產品
var函數
var函數,計算指定字段之中符合查詢條件的變異數估計值。
語法為var(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。
如果符合查詢條件的記錄為兩個以下時,var函數將傳回一個null 值,該表示不能計算變異數。
select min(c) from
(select min(b ) as c from tab_name
union
select min(a) as c from tab_name)
已知有兩張表
部門表department:部門編號 dept_id 、部門名稱 dept_name
員工表employee:員工編號 emp_id、員工姓名 emp_name、 部門編號 dept_id 、工資emp_wage
1)求各部門的平均工資
- select d.dept_name ,round(avg(nvl(e.emp_wage,0)),2) sal from employee e left join department d on e.dept_id=d.dept_id group by d.dept_name;
2)求各部門的總工資
- select d.dept_name ,sum(nvl(e.emp_wage,0)) sal from employee e left join department d on e.dept_id=d.dept_id group by d.dept_name;
3)求工資大於5000的員工所屬的部門名稱、員工id和員工工資
- select d.dept_name,e.emp_id,e.emp_wage from department d ,employee e where e.emp_wage>5000 and d.dept_id = e.dept_id;
涉及函數解釋:
avg為求平均值函數,將要求平均值的列avg(列名)
nvl為如果未空則置空值為其他數據的函數,nvl(為空的列,將空值置成的其他值)
round為四舍五入函數,round(列名,保留小數位數)
oracle常見函數:平均值、總數、最小值、最大值、總和、標准差
avg函數:計算查詢中某一特定字段資料的算術平均值。 count函數:計算符合查詢條件的記錄數。 min, max函數:傳回指定字段之中符合查詢條件的第一條、最末條記錄的資料。 first, last函數:傳回指定字段之中符合查詢條件的最小值、最大值。 stdev函數:計算指定字段之中符合查詢條件的標准差。 sum函數:計算指定字段之中符合查詢條件的資料總和。 var,函數:計算指定字段之中符合查詢條件的變異數估計值。 詳細描述如下: avg函數 avg函數,計算查詢中某一特定字段資料的算術平均值。 語法為avg(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 avg函數在計算時,不包含任何值為 null 的資料。 count函數 count函數,計算符合查詢條件的記錄條數。 語法為count (運算式)。運算式,可為字段名稱、*、多個字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 count 函數於計算時,不包含任何值為 null 的資料。 但是,count(*) 則計算所有符合查詢條件的記錄條數,包含那些null的資料。 如果count(字段名稱) 的字段名稱為多個字段,將字段名稱之間使用 & 分隔。 多個字段當中,至少有一個字段的值不為null的情況下,count函數才會計算為一條記錄。如果多個字段都為null,則不算是一條記錄。譬如: select count(價格 & 代號) from 產品 first/last函數 first函數、last函數,傳回指定字段之中符合查詢條件的第一條、最末條記錄的資料。 語法為first(運算式) 和 last(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 min/max函數 min函數、max函數,傳回指定字段之中符合查詢條件的最小值、最大值。 語法為min(運算式) 和 max(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 stdev函數 stdev函數,計算指定字段之中符合查詢條件的標准差。 語法為stdev(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 如果符合查詢條件的記錄為兩個以下時,stdev函數將傳回一個null 值,該表示不能計算標准差。 sum函數 sum函數,計算指定字段之中符合查詢條件的資料總和。 語法為sum(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 sum函數可使用兩個字段資料運算式,譬如計算產品的單價及數量字段的合計: select sum(單價 * 數量) from 產品 var函數 var函數,計算指定字段之中符合查詢條件的變異數估計值。 語法為var(運算式)。運算式,可為字段名稱、運算式、或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的sql函數。 如果符合查詢條件的記錄為兩個以下時,var函數將傳回一個null 值,該表示不能計算變異數。 select min(c) from (select min(b ) as c from tab_name union select min(a) as c from tab_name)