Maison > base de données > tutoriel mysql > Comment puis-je remodeler les données longues/longues en grand format dans MySQL ?

Comment puis-je remodeler les données longues/longues en grand format dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-21 01:38:14
original
433 Les gens l'ont consulté

How Can I Reshape Long/Tall Data to Wide Format in MySQL?

Remodeler les données dans MySQL : convertir les données longues/longues en grand format

Dans l'analyse des données, il est souvent nécessaire de remodeler les données d'une longue /grand format à un format large. Cette transformation convertit une table avec plusieurs lignes et colonnes en une table avec moins de lignes et plus de colonnes.

Énoncé du problème

Considérez une table MySQL avec des données en format long/tall format, où chaque ligne représente une seule observation avec un pays, une clé et une valeur. L'objectif est de remodeler les données dans un format large, avec une ligne pour chaque pays et des colonnes pour chaque clé.

Solution SQL

MySQL fournit une fonctionnalité intégrée appelés tableaux croisés ou tableaux croisés dynamiques pour accomplir cette transformation. Voici comment procéder :

1. Identifier les clés

Utilisez une requête pour sélectionner des clés distinctes dans la table d'origine :

SELECT DISTINCT key FROM table;
Copier après la connexion

La sortie de cette requête fournira une liste d'éléments clés.

2. Création de la table large

Créez une nouvelle table avec la structure suivante :

CREATE TABLE wide_table (
  country VARCHAR(255),
  key1 VARCHAR(255),
  ...,
  keyN VARCHAR(255),
  newPkey INT AUTO_INCREMENT PRIMARY KEY
);
Copier après la connexion

Remplacez key1, ..., keyN par les noms de clés réels obtenus à l'étape 1. Le La colonne newPkey est une clé primaire à incrémentation automatique utilisée pour identifier de manière unique chaque ligne de la table large.

3. Remplissage des valeurs du tableau

Utilisez une requête croisée pour remplir le tableau large :

SELECT country, 
       MAX(IF(key='President', value, NULL)) AS President,
       MAX(IF(key='Currency', value, NULL)) AS Currency,
       ...

FROM table 
GROUP BY country;
Copier après la connexion

Cette requête utilise l'agrégation conditionnelle (MAX et IF) pour attribuer des valeurs aux colonnes clés pour chaque pays. Les lignes avec des clés en double pour le même pays sont éliminées à l'aide de la fonction MAX.

Exemple d'entrée et de sortie

Entrée :

country attrName attrValue key
US President Obama 2
US Currency Dollar 3
China President Hu 4
China Currency Yuan 5

Sortie :

country President Currency newPkey
US Obama Dollar 1
China Hu Yuan 2

Cet exemple démontre la transformation du format long/haut au format large à l'aide des tableaux croisés MySQL.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal