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 ?
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!