您的位置:首页 > 数据库 > Oracle

oracle聚合函数使用----总结中

2009-09-10 23:31 253 查看
Oracle数据库中的函数很多,其分组函数和聚合函数是Oracle函数中比较常用的函数。
分组函数有Group by 函数,聚合函数有count()、sum()、avg()、max()、min()等等,这里做一些自己的总结,会不断的更新本文的内容。

CREATE TABLE STUDENT
(
STU_NAME VARCHAR2(10),
STU_NO NUMBER(5,0) PRIMARY KEY NOT NULL,
STU_AGE NUMBER(3,0)
)

1. select count(STU_AGE) from STUDENT

检索项目中只有聚合函数count(),则一定检索到一条数据,表STUDENT中没有数据,则结果为0,

表STUDENT中有数据,则为数据的件数。

2. select sum(STU_AGE) from STUDENT

检索项目中只有聚合函数sum(),则一定检索到一条数据,表STUDENT中没有数据,则结果为null,

表STUDENT中有数据,则为每条数据的STU_AGE的和。

使用数据库查看工具可能看不到null的效果,反而跟没有使用sum()函数检索到数据的结果一样,例如:

select STU_AGE from STUDENT 结果和select sum(STU_AGE) from STUDENT结果在数据库查看工具中一样,但是在java代码中可以看到区别,前面sql文检索到0条数据,后面的sql文检索到1条数据,但数据的结果为null。

在数据库查看工具中使用下面的方式区分:

select nvl(sum(STU_AGE),0) from STUDENT 结果为0,

nvl()函数是在检索结果中(存在至少一条数据),如果字段STU_AGE的值为NULL,则用0来替换NULL,

上面的sql文因为使用nvl后的显示结果为0,说明检索到一条数据了。

检索项目中不只有聚合函数sum(),eg:

select STU_NAME,sum(STU_AGE) from STUDENT group by STU_NAME

则存在检索不到数据的情况,例如表STUDENT中没有数据,检索到0件数据。

在数据库查看工具中使用nvl的方式:如下

select STU_NAME,nvl(sum(STU_AGE),0) from STUDENT group by STU_NAME

检索结果中不存在0,说明没有检索到数据。

为什么会产生上面的结果,我正在查询中?可能需要了解sql执行顺序机制,以及执行中什么时候终止。

3.聚合函数avg()、max()、min()的情况和sum()函数一样,自己可以试一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: