2015-12-23 133 views
2

我想两个查询两个选择计数查询,然后计算出百分比

SELECT COUNT(*) FROM abc; 
SELECT COUNT(Status) FROM ABC WHERE Status='Active'; 

结合,然后计算出百分比(以先查询分为第二查询)。我想在一个单一的查询中实现这一点。什么到目前为止,我已经尝试:

SELECT COUNT(*) AS A FROM abc 
UNION 
SELECT COUNT(Status) AS B FROM ABC WHERE Status='Active'; 
UNION 
SELECT(COUNT(Status)*100/SELECT COUNT(*) FROM abc)) AS %ofAB FROM abc WHERE Status='Active' 

我能得到什么:

A 
-- 
31 
36 
86,11111111 

我想要什么:

A | B | %ofAB 
--------------------- 
36 | 31 | 86,1111111%  

回答

2

这应该给你想要的东西:

SELECT 
    COUNT(*) AS TotalCount, 
    SUM(IIF(Status = 'Active', 1, 0)) AS ActiveCount, 
    ROUND((SUM(IIF(Status = 'Active', 1, 0)) * 100/ COUNT(*)),2) AS PctActive 
FROM 
    Abc 

编辑:没有注意到,这是为Access。我不知道Access中是否有CAST,因此您可能需要使用等效函数来确保整数不会简单地产生1或0. Access可能会自动将分数转换为小数,但在SQL Server中它没有。

+0

感谢您编辑Blazyb! –