计算百分比SQL Oracle使用子查询



我的意图是得到一个百分比的人有一个积极的(COMISSAO),但我得到一个错误,而使用主SELECT子查询( Select to_number(Count(*)) FROM EMPREGADO )。

我计算百分比的方法是:

(3 [Comissao呈阳性的人数] * 100)/14 [总人数]

TABLE EMPREGADO:
NUMEMP|COMISSAO
7839|(Null)
7566|(Null)
7782|(Null)
7698|(Null)
7788|(Null)
7844|0
7900|(Null) 
7902|(Null)
7369|(Null) 
7499|   300
7521|   500
7654|   1400
7876|(Null) 
7934|(Null) 
SELECT (COUNT(NVL(EMP.COMISSAO,0))*100)/(Select to_number(Count(*)) FROM EMPREGADO)
    FROM  EMPREGADO EMP
    WHERE EMP.COMISSAO>0

期望输出为:21

您所需要的只是一个合适的CASE语句:

select
  count(case when comissao > 0 then 1 else null end) * 100.0 / count(*)
from empergado

下面是一个示例SQLFiddle,说明查询是如何工作的。

不需要标量子查询,只需执行条件聚合:

SELECT COUNT(NULLIF(EMP.COMISSAO,0))*100)/(Count(*)
FROM  EMPREGADO EMP

最新更新