首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Oracle SQL分成两部分

将Oracle SQL分成两部分
EN

Stack Overflow用户
提问于 2019-02-17 03:33:52
回答 2查看 473关注 0票数 0

我正在尝试编写一个我认为是相当简单的查询,但事实证明比我想象的要难。我想将两个select语句的结果分开:

代码语言:javascript
运行
复制
Select count (*) from tableA where columnA = 'A'
/
Select count (*) from tableA where columnA in ('1','2')

我正在使用Oracle SQL Developer

感谢您的指导

EN

回答 2

Stack Overflow用户

发布于 2019-02-17 05:12:55

我建议使用条件聚合。。。但是使用sum()而不是count()

代码语言:javascript
运行
复制
Select (sum(case when columnA = 'A' then 1 else 0 end) /
        sum(case when columnA in ('1', '2') then 1 end)
       )
from tableA;

请注意,分母中缺少else。这将处理被零除的情况。

票数 4
EN

Stack Overflow用户

发布于 2019-02-17 04:09:18

您可以将两者视为单个主查询中的子查询:

代码语言:javascript
运行
复制
select 
  (select count (*) from tableA where columnA = 'A')
/
  (select count (*) from tableA where columnA in ('1', '2'))
from dual

或者,如果表名和列名实际上是相同的,您可以使用条件计数执行单个查询,如下所示:

代码语言:javascript
运行
复制
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')

我已经修复了两者中的单引号,不确定这些是否只是发布您的问题的问题。

您可能还需要添加逻辑来处理第二个计数为零,如果这可能发生的话-因为这将导致运行时错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54726896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档