2017-10-20 36 views
0

Ma requête en cours renvoie le nombre total de personnes dans chaque groupe ethnique comme prévu, par exemple:Comment obtenir un compte total?

Name  | Count 
---------------------- 
White  | 22 
Asian  | 15 
Black  | 12 

etc. Cependant, je veux ajouter une colonne thrid qui retourne chaque groupe ethnique en pourcentage du total, comment pourrais-je aller à ce sujet?

SELECT 
    eo.EthnicOriginName, 
    ISNULL(e.Number, '') 
    --CAST(e.Number AS FLOAT)/CAST(COUNT(e.intEthnicOriginID) AS FLOAT) * 100 

FROM 
    tblEthnicOrigin eo 
    INNER JOIN tblPerson p ON p.intEthnicOriginID = eo.EthnicOriginID 

    LEFT JOIN (SELECT intEthnicOriginID, COUNT(p.intPersonID) [Number] 
      FROM tblPerson p 
      INNER JOIN tblClient c on c.intPersonID = p.intPersonID 
      GROUP BY intEthnicOriginID) e on e.intEthnicOriginID = eo.EthnicOriginID 

GROUP BY 
    eo.EthnicOriginName, e.Number 
+0

Quels SGBD utilisez-vous? (MySQL ou SQL Server ou Oracle ou ...) –

+0

J'utilise SQL Server – user3027864

+0

Alors la réponse de Gordon devrait être ce que vous cherchez. –

Répondre

2

Dans la plupart des bases de données, vous pouvez utiliser les fonctions de fenêtre standard ANSI:

Le * 1.0 est tout simplement parce que certaines bases de données font division entière, et nous ne voulons pas la division entière.

+0

Merci Gordon – user3027864