我有一个类似的查询
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/