Sélectionnez plusieurs sommes avec la requête MySQL et affichez-les dans des colonnes séparées
Disons que j'ai un tableau hypothétique comme de sorte que les enregistrements lorsqu'un joueur dans un jeu marque un point:
name points
------------
bob 10
mike 03
mike 04
bob 06
Comment aurais-je obtenir la somme de chaque joueur scores et de les afficher côte à côte dans une requête?
Total Des Points De La Table De
bob mike
16 07
Mon (pseudo)-requête est:
SELECT sum(points) as "Bob" WHERE name="bob",
sum(points) as "Mike" WHERE name="mike"
FROM score_table
source d'informationauteur SemperFly
Vous devez vous connecter pour publier un commentaire.
Vous pouvez pivot vos données manuellement:
mais cela ne fonctionnera pas si la liste de vos joueurs est dynamique.
En pur sql:
Cette solution élégante œuvres à cause de mysql booléens évaluation comme
1
pourtrue
et0
pourfalse
vous permettant de multiplier de la vérité d'un test avec une colonne numérique. Je l'ai utilisé de nombreuses fois pour les "pivots" et j'aime la concision.Sont les noms des joueurs connus avant? Si oui, vous pouvez le faire:
Si vous ne le faites pas, vous pourriez encore être en mesure d'utiliser la même méthode, mais vous auriez probablement à construire la requête dynamiquement. Fondamentalement, vous feriez
SELECT DISTINCT name ...
puis utiliser l'ensemble des résultats à la construction de chaque de laCASE
états, puis exécuter le résultat SQL.Ce qui est appelé pivotante la table:
Ou pour le pivot
vous pouvez utiliser la fonction de pivot aussi pour la même chose .. même par les performances de l'étau, il est une meilleure option pour l'utilisation de pivot pour le pivotement... (je parle de base de données oracle)..
vous pouvez utiliser la requête suivante pour cela ainsi..
-- (si vous n'avez que ces deux colonnes en vous table, alors il sera bon de voir la sortie d'autre pour d'autres colonne supplémentaire, vous obtiendrez des valeurs null)
dans cette requête, vous obtiendrez des données très rapide et vous devez ajouter ou supprimer des noms de joueurs qu'à un seul endroit
🙂
si vous avez plus de ces deux colonnes dans ta table, alors vous pouvez utiliser la requête suivante