2015-12-23 132 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! –