Obtenir colonne de somme et de l'utiliser pour calculer le pourcentage du total (mySQL)
Ici très simple est de regarder ma table. J'ai les colonnes 1 et 2 et de la nécessité de générer de la colonne 3. La colonne 3 est tout simplement le total de la Number
colonne pour toutes les Name
divisé par Number
pour la ligne de donnée.
| Name | Number | % of total |
| ------------- |:-------------:| -----: |
| Bob | 5 | 25 |
| Sally | 10 | 50 |
| John | 5 | 25 |
Je suis aux prises avec la façon d'obtenir le nombre total de lignes et d'utiliser cette valeur pour calculer le reste.
EDIT: je suis à la recherche d'en faire une seule requête au lieu de deux si possible.
- Avez-vous le montant total de la deuxième colonne à l'avance?
- Non, je n'ai pas. C'est la partie la plus délicate (pour moi). Pour essayer d'obtenir de la valeur et de l'utiliser ensuite le tout dans une seule requête.
Vous devez vous connecter pour publier un commentaire.
Vous avez juste besoin de
CROSS JOIN
laSUM()
deNumber
colonne:Démo Ici
WHERE
de l'alinéa (commeWHERE name="Bob"
), où serait-il aller? J'ai essayé de le mettre après leFROM mytable
, mais d'avoir des erreurs.SUM
est appliqué? Ensuite, vous avez à faire dans leSELECT
de laCROSS JOIN
. SinonWHERE
doit être placé après leCROSS JOIN
.Number
colonne. C'est là que je me suis raccroché, je pense.group by
etwhere
dans les bons endroits.Si je faisais ça, je voudrais commencer par le stockage d'une variable qui a tenu le total, comme ceci:
Une fois que j'ai eu cette variable, j'ai pu exécuter une requête qui a obtenu le pourcentage pour chaque ligne comme ceci:
Si vous ne souhaitez pas utiliser une variable, vous pouvez simplement déplacer que sous-requête dans votre instruction select:
Voici un SQL Violon exemple à chaque approche.
Vous pouvez l'obtenir avec une sous-sélection: