2014-06-17 42 views
0

我有兩個布爾值,我想劃分它們的計數。在SQL中比較兩個不相關的計數

假設一個表在列X中有1個yes值,在列Y中有2個yes值。 我希望SELECT Count(X)/ Count(Y)返回.5。

我在網上找到的解決方案使用WITH,其中MS-Access s不允許我使用。

這是我不得不使用WITH更多的澄清:

WITH T2 AS 
(SELECT GRANTS.[Grant Program Number] AS GPN, Count(GRANTS.[Grant Awarded]) AS AwardCount 
FROM GRANTS 
WHERE GRANTS.[Grant Awarded]=Yes) 
SELECT (T2.AwardCount)/(T1.SubCount) AS [Award Rate] 
FROM (SELECT GRANTS.[Grant Program Number] AS GPN, Count(GRANTS.[Grant Submitted]) AS SubCount 
FROM GRANTS 
WHERE GRANTS.[Grant Submitted]=Yes) AS T1 INNER JOIN GRANTS ON T1.GPN = T2.GPN 
GROUP BY [Award Rate]; 
+0

而不是makin我們猜測或推斷表結構,給我們怎麼樣?我很懶。 –

+0

我確實把它給你了。假設一個名爲X和Y的兩個布爾列表。 –

+0

...那麼你選擇的答案是不正確的,不是嗎?它沒有提到X或Y. P –

回答

0

如果您正在尋找獎率對於整個表格,則查詢將是

SELECT 
    SUM(IIF([Grant Awarded],1,0))/ NZ(SUM(IIF([Grant Submitted],1,0)),1) as [Award Rate] 
FROM 
    GRANTS 
0

聲明,我用不上所以這可能無法正常工作。也許它會給你一些想法,無論如何:

select (1.0 * count(case when X = 'yes' then 1 end)) 
      /count(case when Y = 'yes' then 1 end) 
from T; 

如果X和Y是布爾:

select (1.0 * count(case when X then 1 end)) 
      /count(case when Y then 1 end) 
from T; 

你可以試試這個:

select (1.0 * sum(IIf(X, 1, 0))) 
      /sum(IIf(Y, 1, 0)) 
from T; 
+0

我嘗試了一個缺少操作符的語法錯誤。我在使用「when」時遇到問題,所以我假設我不被允許。 –

+0

我搜索了一下,'sum(IIf(X,1,0)'看起來是人們用的,我會更新我的答案 – Lennart