Je travaille avec des données d'enquête. Essentiellement, je veux compter le nombre total de réponses pour une question pour un emplacement, puis utiliser ce total pour créer le pourcentage de toutes les réponses pour chaque réponse particulière. Je veux ensuite regrouper les résultats par lieu.Obtenir la valeur en pourcentage des résultats GROUP BY dans MySQL
Une sortie idéale serait similaire à ceci:
Q1 | Etat | Ville | %
oui | MA | bos | 10
non | MA | bos | 40
m. | MA | bos | 50
oui | MA | came | 20
non | MA | came | 20
m. | MA | cam | 80
Le problème que je tombe sur (je crois) est que GROUP BY
œuvres avant ma déclaration count
, donc je ne peux pas compter toutes les réponses. Voici un exemple de ce que je dois produire des nombres réels:
SELECT q1, state, city, COUNT(q1) FROM master GROUP BY state, city, q1
Toutes les questions ont des réponses, donc ci-dessous est ma tentative pour obtenir le pourcentage:
SELECT q1, state, city, count(q1)/(count(nullif(q1,0))) as percent FROM master group by state, city, q1
Je crois en utilisant WITH
ou OVER(PARTITION BY...)
seraient être une avenue possible, mais je ne peux pas non plus travailler.
Merci Jeff. Si je groupais par compte (q1), je ne pense pas que cela m'aidera à obtenir le total des réponses par question, pour ensuite utiliser contre le compte (q1). Au lieu de count (q1) je veux compter (q1)/total_responses_per_this_location, ou quelque chose comme ça. ou est-ce que je complique les choses? –
Ce serait deux agrégats distincts sur un critère de sélection différent, ce à quoi Trevor a répondu. –