使用sql函数,您可以在一个select语句的查询当中,直接计算数据库资料的平均值、总数、最小值、最大值、总和、标准差、变异数等统计。使用recordset对象时,也可使用这些sql函数。
sql函数包括如下:
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)
获取数据的前n行
ROWNUM * from manager where ROWNUM<=3;
CASE函数:
select name,
CASE age when 100 then 'low'
when 500 then 'high'
ELSE 'medium' END
FROM manager;
连接两个字符串:
||
select name || salary from manager;
生成随机数:
SQL> select dbms_random.value from dual;
VALUE
----------
.472184325
已选择 1 行。
已用时间: 00: 00: 00.00
SQL> select dbms_random.value(1,50) from dual;
DBMS_RANDOM.VALUE(1,50)
-----------------------
34.429701
已选择 1 行。
已用时间: 00: 00: 00.01
SQL> select trunc(dbms_random.value(1,50)) from dual;
TRUNC(DBMS_RANDOM.VALUE(1,50))
------------------------------
35