问题:
表: visits
NUMB VISITNUMB
------ ----------
SD01 12628
SD02 6168216
SD03
SD04 2308646
SD05 29979109
SD06
SD07 699879
SD08 1512191
SD09 5771408
SD10 2393528
SD11 832988
SD12
SD13
SD14
GD06 492559
GD04 928430
GD02 1881556
GD01 5759619
GD07 955794
GD09 4207098
NUMB VISITNUMB
------ ----------
GD10
GD03
GD05
GD08
问题:求大于所有visitnumb平均值的行
如果单纯用:
select name,visitnumb from visits where visitnumb>(selectavg(visitnumb) from visits);
这样是不行的,因为 avg自动过滤掉了值为空的visitnumb值。
正确:
select name,visitnumb from visits where visitnumb>(selectavg(nvl(visitnumb,0)) fromvisits);
如果visitnumb为空,则赋值0,这样算出来的就是绝对平均值了(包含为空的行)。