2014-06-17 4 views
0

J'ai deux valeurs booléennes et je souhaite diviser leur nombre.Comparaison de deux nombres indépendants dans SQL

Dites qu'un tableau a 1 valeur oui dans la colonne X et 2 valeurs oui dans la colonne Y. Je veux que SELECT Count (X)/Count (Y) renvoie .5.

Les solutions que j'ai trouvées en ligne utilisent WITH, ce que MS-Access ne me permet pas d'utiliser.

Voici ce que j'avais l'aide de la WITH pour plus de précisions:

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

Au lieu de makin Sommes-nous deviner ou déduire la structure de la table, que diriez-vous de nous le donner? Je suis fainéant. –

+0

Je vous l'ai donné. Supposons une table de deux colonnes booléennes nommées X et Y. –

+0

... alors la réponse que vous avez sélectionnée est incorrecte, n'est-ce pas? Il ne mentionne pas X ou Y.: P –

Répondre

0

Si vous êtes à la recherche du taux d'attribution pour toute la table, la requête serait

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

Avertissement, je n'ont pas accès si cela ne fonctionne pas. Peut-être vous donner une idée de toute façon:

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

Si X et Y sont booléens:

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

Vous pouvez essayer ceci:

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

J'ai essayé par J'obtiens une erreur de syntaxe pour un opérateur manquant. Il y a un problème avec moi en utilisant "quand" donc je suppose que je ne suis pas autorisé. –

+0

J'ai googlé et 'sum (IIf (X, 1, 0)' semble être ce que les gens utilisent.) Je mettrai à jour ma réponse – Lennart

Questions connexes