【问题标题】:How can I calculate a percentage from values obtained by 2 different queries in SSMS?如何从 SSMS 中的 2 个不同查询获得的值计算百分比?
【发布时间】:2021-02-22 06:55:24
【问题描述】:
第一个查询:
select COUNT(EUpdate)
from EmpUpdates
where EProj = 'abc' and EID = '101';
第二次查询:
select COUNT(EProj)
from EmpUpdates
where EID = '101';
percentage = (first query / second query) * 100
【问题讨论】:
标签:
sql
sql-server
count
pivot
【解决方案1】:
您可以进行条件聚合。除非eupdate 和eproj 中有null 值,否则我会推荐avg()
select avg(case when eproj = 'abc' then 100.0 else 0 end) res
from empupdates
where eid = 101
如果你真的需要处理nulls:
select 100.0 * count(case when eproj = 'abc' then eupdate end) / count(eproj) res
from empupdates
where eid = 101
我删除了eid 周围的单引号,因为它看起来像一个数字;如果它确实是一个字符串,那么您可以恢复该更改。
【解决方案2】:
您可以使用条件聚合:
SELECT 100.0*COUNT(CASE WHEN EProj = 'abc' AND EID = '101' THEN EUpdate END) /
COUNT(CASE WHEN EID = '101' THEN Eproj END) AS percentage
FROM EmpUpdates;