????????現(xiàn)實(shí)中每個人都有工資倦微,但是努力工作但人可以得到獎金揍瑟。工資常有而獎金不常有少欺。是故講分組函數(shù)與空值喳瓣。
? ? ? ? 舉個栗子。哇咔咔赞别。
? ? ? ? ? ? ? ? 統(tǒng)計員工的平均工資【工資人人有份哦】
? ? ? ? ? ? ? ? select? ? sum(sal)/count(*)? ? from? ? emp;
? ? ? ? ? ? ? ? select? ? sum(sal)/count(sal)? ? from? ? emp;
? ? ? ? ? ? ? ? select? ? avg(sal)? ? from? ? emp;
? ? ? ? ? ? ? ? 以上SQL的結(jié)果都是一樣的哦畏陕。
? ? ? ? ? ? ? ? 統(tǒng)計員工的平均獎金【獎金不是人人都有的哦】
? ? ? ? ? ? ? ? select? ? sum(comm)/count(*)? ? a? ? ,? ? select? ? sum(comm)/count(comm)? ? b? ? ,? ? select? avg(comm)? ? c? ? from? ? emp;
? ? ? ? ? ? ? ? 結(jié)果是b、c相同與a不同仿滔,原因就是因?yàn)閏omm這一列中包含空值惠毁。也就是說count(*)和? count(sal)是不一樣的。
? ? ? ? ? ? ? ? ? ? ? ? select? ? count(*),count(comm)? ? from? ? emp;
? ? ? ? ? ? ? ? ? ? ? ? count(*)是有14條崎页,而count(comm)只有4條
? ? ? ? ? ? ? ? 我們可以得到一個結(jié)論就是分組函數(shù)是會自動忽略空值的
? ? ? ? ? ? ? ? ? ? ? ? select? ? count(*),count(nvl(comm,0))? ? from? ? emp;
? ? ? ? ? ? ? ? ? ? ? ? nvl函數(shù)的作用鞠绰,如果第一個函數(shù)為空的話返回第二個函數(shù),如果不為空返回第一個函數(shù)自己
? ? ? ? ? ? ? ? 以后要根據(jù)實(shí)際需要決定分組函數(shù)要不要加nvl