Maison >base de données >tutoriel mysql >Comment puis-je faire pivoter les résultats d'une requête dans MySQL à l'aide de la clause GROUP BY ?

Comment puis-je faire pivoter les résultats d'une requête dans MySQL à l'aide de la clause GROUP BY ?

DDD
DDDoriginal
2024-11-06 11:27:02953parcourir

How can I pivot query results in MySQL using the GROUP BY clause?

Pivotement des résultats de requête à l'aide de GROUP BY dans MySQL

En restructurant les données des lignes en colonnes, le pivotement peut aider à améliorer la visualisation et l'analyse des données. Pour faire pivoter les résultats d'une requête en fonction d'une colonne spécifique, nous pouvons utiliser la clause GROUP BY dans MySQL.

Considérons un exemple de table avec le schéma suivant :

data_id     data_timestamp         data_value
--------------------------------------------
1           2011-07-07 00:01:00    0.400  
1           2011-07-07 00:02:00    0.500
1           2011-07-07 00:03:00    0.600
1           2011-07-07 00:04:00    0.700
2           2011-07-07 00:01:00    0.100  
2           2011-07-07 00:02:00    0.200
2           2011-07-07 00:03:00    0.250
2           2011-07-07 00:04:00    2.300

Pour faire pivoter ces données en fonction de la colonne data_timestamp, nous pouvons utiliser une combinaison de l'instruction CASE et de la fonction d'agrégation SUM :

SELECT d.data_timestamp
     , SUM( CASE WHEN data_id =  1 THEN data_value ELSE 0 END ) AS 'input_1'
     , SUM( CASE WHEN data_id =  2 THEN data_value ELSE 0 END ) AS 'input_2'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC

Cette requête résume efficacement la colonne data_value pour chaque data_timestamp unique et crée de nouvelles colonnes pour chaque data_id distinct (dans ce cas case, input_1 et input_2).

Alternativement, nous pouvons également utiliser l'instruction IF pour obtenir le même résultat :

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'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC

Ces deux méthodes fournissent un moyen efficace de faire pivoter les résultats de la requête en utilisant la clause GROUP BY dans MySQL, permettant une analyse des données plus flexible et informative.

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