Sql 访问字段列表中的嵌套选择

Sql 访问字段列表中的嵌套选择,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我收到一个查询,用于搜索数据库中的某些数据,如下所示: select nvl(to_char(a.empresa), 'SEM REMESSA') empresa, c.conta, nvl(sum(a.valor_total), 0) as folha, (select count(distinct(l2.creditado)) from lancamentos l2 inner join vw_arquivos a

我收到一个查询,用于搜索数据库中的某些数据,如下所示:

select nvl(to_char(a.empresa), 'SEM REMESSA') empresa,
      c.conta,
       nvl(sum(a.valor_total), 0) as folha,
       (select count(distinct(l2.creditado))
          from lancamentos l2
         inner join vw_arquivos a2
            on l2.arquivo = a2.arquivo
         where a2.empresa = a.empresa) as funcionarios
  from conta_table c
  left join vw_arquivos a
    on c.conta = a.conta
   and a.situacao = 6
  group by a.empresa, c.conta
我必须获取操作的值
folha/funcionarios
,但是如果我将其放入列表中,我会得到错误:

ORA-00904: "FUNCIONARIOS": invalid identifier
00904. 00000 -  "%s: invalid identifier"
当我用相同的嵌套select替换对
funcionarios
的引用时,我在引用
folha
时得到相同的错误

我知道我可以用它们各自的计算来替换这两个引用,它是有效的。像这样:

nvl(sum(a.valor_total), 0) / 
(select count(distinct(l2.creditado))
          from lancamentos l2
         inner join vw_arquivos a2
            on l2.arquivo = a2.arquivo
         where a2.empresa = a.empresa) as division
但这看起来并没有那么优化,也不是最好的方法。所以我的问题是。。。
是否有任何方法可以通过最后一次除法运算选择这些值,但比重复
folha
funcialios
计算更优化?可能是引用这些已计算值的方法。

folha
funcionarios
不能在同一查询中引用,因为它们是别名。您必须将整个查询作为子查询,并获得除法,如下所示:

select empresa, conta, folha/funcionarios folha_div_funcionarios
from (
  select nvl(to_char(a.empresa), 'SEM REMESSA') empresa,
        c.conta,
         nvl(sum(a.valor_total), 0) as folha,
         (select count(distinct(l2.creditado))
            from lancamentos l2
           inner join vw_arquivos a2
              on l2.arquivo = a2.arquivo
           where a2.empresa = a.empresa) as funcionarios
    from conta_table c
    left join vw_arquivos a
      on c.conta = a.conta
     and a.situacao = 6
    group by a.empresa, c.conta
)