sql - 两次select count查询然后计算百分比

标签 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%    

最佳答案

这应该给你你想要的:

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 的。我不知道 CAST 在 Access 中是否可用,因此您可能需要使用等效函数来确保整数不会简单地产生 1 或 0。Access 可能会转换自动除以小数,但在 SQL Server 中则不会。

关于sql - 两次select count查询然后计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34441779/

相关文章:

ms-access - 为什么我的 VBA for MS Access Buggy?

sql - 如何使用 SQL 比较序列?

windows - 在不同模块中 Access VBA Form Private Sub 调用 Public Function

windows-10 - Access/MySQL - 向后兼容的迁移;链接表

sql - 聚合函数或 GROUP BY 子句

sql - Google 查询 - "NOT LIKE"语句不起作用

.net - VS Lightswitch 和 MS Access DB?

mysql - 更改mysql中外键引用的数据类型

mysql - 它表示什么时间?

mysql - mysql 中的 In 子句