sql的avg函数
请问,如果该条数据的本列值为空的话
使用avg函数,会把这条数据也算进来吗?
不会
前面我们在介绍oracle的聚合函数时提到如果在给定的值中存在空值的话,oracle将会忽略掉这些空值。这个处理的方式在大多数时候是符合我们要求的,但是在有些时候可能会有问题。
例如,现在到了年关,公司会对部分员工进行奖励,而当然会有一部分人没有得到奖励。比如现在有一张表中存的是员工的奖金额,那个将会有一部分人对应的奖金额是空值,因为他们根本就没有得到奖励,现在老板让你统计全公司的得奖平均额。
如果你直接使用
Select avg(bonus) from emp;
得到的结果将会是那些得到奖励的人中的平均奖励额。
而老板要求的是统计出全公司所有员工的奖励平均额。
这是你应该使用NVL函数来把那些没有拿到奖励的员工也强行加入进来。
例如:
Select avg(NVL(bonus,0)) from emp;
在我们的scott的schema里有一个表是emp,虽然里面没有奖金,但有另外一个column comm.,我们可以驾驶comm来表示奖金来测试一下
Select avg(comm) from emp; 得到
AVG(COMM)
———-
550
Select avg(NVL(comm,0)) from emp; 得到
AVG(NVL(COMM,0))
—————-
157.142857
这样就验证了刚才的说法。
学习
2楼说的很有道理
组函数是忽略null的
可以测一下
select count(1) from tab_name
select count(tab_col) from
相关问答:
我要得到一个字符串如:
sdfk|||sgts
sdfsfd|||rgreg
wrfw|||sefw
就是要得到|||后面的字符串,有什么函数吗?怎么用呢?谢谢!
SQL code:
select
right(col,len(col)-charindex('|||',col)-2)
f ......
需求如下:
a表:
p_id status
1 0
2 0
b表
rec_id pid purchase_qty receive_qty flag
1 1 10 10 0
2 ......
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
题目:把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
update SC set sco ......
Id Name Flag
1 张三 1
2 王五 3
3 张三 1
4 李四 2
5 张三 1
6 李四 2
我想输出的时候变成这样
Id Name Flag
1 张三 1 & ......