我的表里有一个字段存放资料,设置的是不能为空,
但是有时资料会缺值,就用999999,六个9代表缺的资料了。
这样的话,还能用AVG函数计算这个字段的平均吗?怎么才能不把999999算进去?
会不会我开始设计的不对,应该设为可以为空,如果可以为空的话,AVG函数就会跳过空值吧?(另外,怎么看自己剩余的分数啊,晕,没找到)谢谢!
但是有时资料会缺值,就用999999,六个9代表缺的资料了。
这样的话,还能用AVG函数计算这个字段的平均吗?怎么才能不把999999算进去?
会不会我开始设计的不对,应该设为可以为空,如果可以为空的话,AVG函数就会跳过空值吧?(另外,怎么看自己剩余的分数啊,晕,没找到)谢谢!
解决方案 »
- Oracle ERP表复合索引的使用
- 如何 查询出oralce用户的表的所有“列”(包含其他用户共享给他的表) < 给我上次提的问题不同上次是查询表这次是查询列 >
- 这什么原因: v_char:=v_date,则从2050年开始,v_char会比v_date少100年
- 求救!ORA-00955: name is already used by an existing object
- 关于多表联查
- 求条sql语句~ 如何获的一个表中的第15到第40条数据?
- 在线求救,Oracle数据库里分组后想查询每组里的某条记录怎么办?
- Oracle中的数据库在哪存放着?
- 一个小问题
- 匯出XML方式 請教
- 我要在已有的包中创建一个Procedure
- 关于转义字符,被弄晕了,大家帮我看看
avg(字段,'999999,null,字段值)
假设
字段 a
999999
1
2
3
4
5
用avg(decode(a,'999999',null,a))
出来就是平均1-5的
select 1 as v from dual
union select 2 from dual);
--返回1.5
select avg(v) from(
select null as v from dual
union select 2 from dual);
--返回2
select avg(decode(v,99999,null,v)) from(
select 99999 as v from dual
union select 2 from dual);
--返回2
select avg(decode(a,999999,null,a))
from (
select 999999 a from dual
union all
select 1 from dual
union all
select 2 from dual
union all
select 3 from dual
union all
select 4 from dual
union all
select 5 from dual)结果
3
如果你字段是varchar2格式,就用avg(decode(a,'999999',null,a))
如果是number 就用
avg(decode(a,999999,null,a))
怎么前面一个a,后面又是一个a呢?是什么意思呀
如果a=b则返回c否则返回d
decode 判断条件 a字段
如果a字段=999999,输出 null
否则输出 a字段的内容
假设表的数据为
999999
1
2
3
4
5
用select decode(a,999999,null,a)) from table
的结果就是
a
(值为null)
1
2
3
4
5
再avg一下,出为就是3