Maison >base de données >tutoriel mysql >Comment faire pivoter les résultats d'une requête MySQL avec GROUP BY et plusieurs ID de données ?

Comment faire pivoter les résultats d'une requête MySQL avec GROUP BY et plusieurs ID de données ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 17:09:03920parcourir

How to Pivot MySQL Query Results with GROUP BY and Multiple Data IDs?

Résultats de la requête MySQL PIVOT avec GROUP BY

Problème :

Transformation d'une table de base de données en afficher les lignes sous forme de colonnes, en regroupant les données selon une clé spécifiée (par exemple, horodatage) tout en garantissant que toutes les valeurs de données pour chaque clé sont présentées dans la colonne correspondante.

Requête proposée :

SELECT d.data_timestamp,
       SUM(IF(data_id = 1, data_value, 0)) AS 'input_1',
       SUM(IF(data_id = 2, data_value, 0)) AS 'input_2',
       ...
       SUM(IF(data_id = 20, data_value, 0)) AS 'input_20'
FROM data
GROUP BY d.data_timestamp
ORDER BY d.data_timestamp ASC

Explication :

  • La requête externe sélectionne des horodatages de données distincts dans la table de données.
  • Pour chaque horodatage de données, la requête calcule le somme des valeurs de données pour chaque data_id à l'aide de la fonction IF() à l'intérieur de l'agrégat SUM().
  • Si le data_id correspond à l'identifiant souhaité (par exemple, 1 pour input_1), la valeur de données correspondante est ajoutée à la somme ; sinon, 0 est ajouté.
  • Ce calcul est répété pour chaque data_id jusqu'à 20, créant une colonne pour chaque data_id différent.
  • Le résultat final est regroupé par horodatage des données et classé par ordre croissant. order.

Limitations :

  • Cette approche nécessite une somme explicite pour chaque data_id dans la requête, ce qui peut ne pas être réalisable s'il y a un grand nombre d'identifiants.
  • Une approche alternative impliquant un CASE ou des JOIN à plusieurs niveaux peut être utilisée en fonction des exigences spécifiques et de la structure des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn