我正在尝试编写我认为比较简单的查询,但是事实证明它比我想象的要难。我想将两个选择语句的结果分开:
Select count (*) from tableA where columnA = 'A'
/
Select count (*) from tableA where columnA in ('1','2')
我正在使用Oracle SQL Developer
感谢您的指导
答案 0 :(得分:4)
我建议条件聚合。 。 。但使用sum()
而不使用count()
:
Select (sum(case when columnA = 'A' then 1 else 0 end) /
sum(case when columnA in ('1', '2') then 1 end)
)
from tableA;
请注意,分母中缺少else
。这样可以处理被零除的情况。
答案 1 :(得分:2)
您可以将,都视为一个主查询中的子查询:
select
(select count (*) from tableA where columnA = 'A')
/
(select count (*) from tableA where columnA in ('1', '2'))
from dual
或者如果表名和列名实际上相同,则可以使用条件计数执行单个查询,例如:
select count (case when columnA = 'A' then columnA end)
/
count (case when columnA in ('1', '2') then columnA end)
from tableA
where columnA in ('A', '1', '2')
我已经修复了两个引号中的单引号,不确定这些引号是否只是发布问题的问题。
如果可能发生的话,您可能还需要添加逻辑以处理第二个计数为零,因为这将导致运行时错误。