两个选择计数查询然后计算百分比

时间:2015-12-23 18:39:35

标签: sql ms-access

我想结合两个查询

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%    

1 个答案:

答案 0 :(得分: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中它没有。