-1
votes

Essayer d'obtenir un pourcentage du total comme un champ

J'essaie d'obtenir un pourcentage de l'enregistrement total en plus des comptes de chaque groupe.

Par exemple, j'ai une requête ci-dessous où je reçois le nombre de documents totals qui sont "touchés" et "touchés" et ceux qui ne le font pas. p>

Je veux ensuite obtenir le pourcentage de l'ensemble en termes de celles-ci (si 40/50 enregistrements sont "touchés", il devrait indiquer 80%) P> N / A P>

SELECT COUNT(Contact) AS [COUNT],
       (CASE WHEN number>=1 THEN 'Touched' ELSE 'Not Touched' END) AS TOUCHED
FROM Events
GROUP BY (CASE WHEN number>=1 THEN 'Touched' ELSE 'Not Touched' END)

Count    TOUCHED
604      Not Touched
213      Touched


0 commentaires

4 Réponses :


1
votes

compte () * 100 / somme () code> retournera le pourcentage:

SELECT COUNT(Contact) AS COUNT,
    (CASE WHEN number >= 1 THEN 'Touched' ELSE 'Not Touched' END) AS TOUCHED,
    (COUNT(Contact) * 100 / SUM(Contact)) AS PERCENT
FROM Events
GROUP BY (CASE WHEN number >= 1 THEN 'Touched' ELSE 'Not Touched' END)


1 commentaires

Vous pourrait envie d'éviter la division entière ici.



0
votes

Ceci devrait vous procurer ce que vous êtes après:

SELECT COUNT(Contact) AS [COUNT],
       (COUNT(Contact) * 1.0) / COUNT(Contact) OVER () AS Perc,
       CASE WHEN number>=1 THEN 'Touched' ELSE 'Not Touched' END AS TOUCHED
FROM Events
GROUP BY CASE WHEN number>=1 THEN 'Touched' ELSE 'Not Touched' END;


0 commentaires

0
votes

Il suffit d'envelopper quelque chose comme: xxx

Ceci peut également être accompli en l'insérant dans une table Temp et faisant la même chose avec les colonnes.

vous peut avoir à lancer / convertir [touché] à une décimale.


2 commentaires

L'OP n'a pas 2 colonnes appelées touché et [non touché] , ce sont des varchar valeurs de la colonne touchée .


OPE a raté cela, bon point. Devinez ID Utilisez une jointure auto pour la séparer dans 2 colonnes, alors cela ressemble à ce que tout le monde a cela.



0
votes

Cette version remplace les étiquettes de votre requête d'origine avec les noms de colonne. Si vous avez besoin d'étiquettes en ligne, les modifications doivent être simples: xxx pré>

Notez que si numéro code> ne peut jamais être négatif, le calcul touché peut être modifié en p >

SUM(SIGN(number)) as Touched,


0 commentaires