oracle - 计算两个选择计数的百分比

标签 oracle

我有一个类似的查询

select count(1) from table_a where state=1;

给出 20

select count(1) from table_a where state in (1,2);

给出 25

我想要一个提取百分比 80% 的查询(将为 20*100/25)。 是否可以仅在一个查询中包含这些内容?

最佳答案

我认为无需测试以下 SQL 命令就可以做到这一点

SELECT SUM(CASE WHEN STATE = 1      THEN 1 ELSE 0 END)
      /SUM(CASE WHEN STATE IN (1,2) THEN 1 ELSE 0 END)
      as PERCENTAGE
FROM TABLE_A

或以下内容

SELECT S1 / (S1 + S2) as S1_PERCENTAGE
FROM
    (
    SELECT SUM(CASE WHEN STATE = 1 THEN 1 ELSE 0 END) as S1
          ,SUM(CASE WHEN STATE = 2 THEN 1 ELSE 0 END) as S2
    FROM TABLE_A
    )

或以下

SELECT S1 / T as S1_PERCENTAGE
FROM
    (
    SELECT SUM(CASE WHEN STATE = 1      THEN 1 ELSE 0 END) as S1
          ,SUM(CASE WHEN STATE IN (1,2) THEN 1 ELSE 0 END) as T
    FROM TABLE_A
    )

您可以选择性能或可读性!

关于oracle - 计算两个选择计数的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49047896/

相关文章:

sql - Oracle TO_DATE 不抛出错误

sql - 创建字母数字序列 Oracle SQL

sql - 根据组合键比较表的记录

SQL 错误 : ORA-00922: missing or invalid option

oracle - 按小时或按天对记录进行分组,并用零或空值填充空白

sql - 用 NULL 初始化数字

sql - Oracle sql MERGE INTO 带有单个 where 子句

oracle - oracle apex 中的预渲染和后渲染

SQL查询以查找同一列中值的乘积

sql - 物化 View 强制和完整