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
Libérer: 2024-11-06 11:27:02
original
951 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal