我的意图是获得一定比例的积极(COMISSAO)但在主要选择( 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
答案 0 :(得分:2)
不需要标量子查询,只需执行条件聚合:
SELECT COUNT(NULLIF(EMP.COMISSAO,0))*100)/(Count(*)
FROM EMPREGADO EMP
答案 1 :(得分:2)
您需要的只是一个位置很好的CASE
声明:
select
count(case when comissao > 0 then 1 else null end) * 100.0 / count(*)
from empergado
以下是一个示例SQLFiddle,其中包含查询的工作原理。