Pivotement des résultats de requête à l'aide de MySQL GROUP BY
Dans une base de données relationnelle, le pivotement des données fait référence au réarrangement des lignes et des colonnes pour améliorer la visualisation des données . Ici, nous abordons un défi commun : transformer les données de lignes en colonnes à l'aide de GROUP BY.
Requête
Pour faire pivoter les données, nous pouvons utiliser le GROUPE Clause BY ainsi que des fonctions d'agrégation conditionnelles, telles que SUM ou CASE. Considérons la requête suivante :
<br>SELECT<br> d.data_timestamp,<br> SUM(CASE WHEN data_id = 1 THEN data_value ELSE 0 END) AS 'input_1',<br> SOMME (CAS QUAND data_id = 2 ALORS data_value ELSE 0 END) AS 'input_2'<br>FROM<br> data<br>GROUP BY<br> d.data_timestamp<br>ORDER BY<br> d.data_timestamp ASC;<br>
Explication
Approches alternatives
MySQL propose également des méthodes alternatives pour faire pivoter les données. Ces approches incluent l'utilisation de la fonction IF() ou des jointures à plusieurs niveaux.
Fonction IF()
<br>SELECT<br> d. data_timestamp,<br> SUM(IF(data_id = 1, data_value, 0)) AS 'input_1',<br> SUM(IF(data_id = 2, data_value, 0)) AS 'input_2'<br>FROM<br> data<br>GROUP BY<br> d.data_timestamp<br>ORDER BY<br> d.data_timestamp ASC;<br>
Jointures à plusieurs niveaux
<br>SELECT<br> d.data_timestamp,<br> d01.data_value AS 'input_1',<br> d02.data_value AS 'input_2'<br>FROM<br> (</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">SELECT DISTINCT d.data_timestamp FROM data
) AS d
LEFT JOIN
data AS d01
ON
d01.data_timestamp = d .data_timestamp ET d01.data_id = 1
LEFT JOIN
data AS d02
ON
d02.data_timestamp = d.data_timestamp AND d02.data_id = 2
ORDER BY
d.data_timestamp ASC;
Conclusion
La clause GROUP BY de MySQL fournit un mécanisme puissant pour faire pivoter les résultats des requêtes. Les techniques CASE, IF() et de jointure à plusieurs niveaux offrent une flexibilité dans la gestion des données et s'adaptent à diverses structures de données. Le choix de l'approche optimale dépend des exigences spécifiques et des considérations de performances.
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!