2009-12-17 10 views
0

Ok donc cette requête devrait être facile mais je vais avoir un peu de difficulté. Disons que j'ai une table appelée 'foo' avec les colonnes 'a', 'b'.Requête SQL dans MySQL en utilisant GROUP BY

J'essaie de comprendre ce qui suit dans une requête:

sélectionner la façon dont la colonne « a » sont disponibles de la colonne de type « b », cela se fait avec les éléments suivants:

mysql> sélectionnez count (a), b à partir de foo GROUP BY b;

c'est simple. mais maintenant je veux ajouter une troisième sortie à cette requête qui montre le pourcentage du résultat de count (a) divisé par count (*). Donc, si j'ai 100 lignes au total et que l'un des résultats GROUP BY revient avec 20, je peux obtenir la troisième colonne pour produire 20%. Cela signifie que la colonne a représente 20% du pool global.

Répondre

4

En supposant que vous avez> 0 lignes foo

SELECT count(a), b, (count(a)/(SELECT count(*) FROM foo)) * 100 
FROM foo 
GROUP BY b 
0

Il y a un meilleur pari risque de lent en cours d'exécution, est de programmer tout ce qui est à la préforme deux requêtes distinctes.

SELECT count(*) INTO @c FROM foo; 
SELECT count(a), b, (count(a)/@c)*100 FROM foo GROUP by b;