More

    Comment changer le formulaire de tableau pour convertir des lignes en colonnes dans MySQL

    MySQL est l’un des systèmes de gestion de bases de données relationnelles les plus populaires au monde. MySQL nous permet de stocker, de gérer et d’analyser des données sous forme de tableaux. Une table se compose de lignes et de colonnes qui représentent des entités et des attributs de données. Cependant, nous devons parfois modifier la forme du tableau pour convertir les lignes en colonnes ou vice versa. C’est ce qu’on appelle la transposition de table.

    Les tableaux de transposition peuvent être utiles pour plusieurs raisons, telles que :

    • Simplifiez la visualisation et la compréhension des données
    • Optimiser les performances des requêtes et des index
    • Adaptez les structures de données aux besoins de l’entreprise ou des applications
    • Effectuer des opérations d’agrégation ou de calcul sur des données
    script mysql

    Cependant, MySQL ne dispose pas d’une fonction intégrée permettant de transposer directement les tables. Par conséquent, nous devons utiliser certaines techniques ou astuces pour atteindre cet objectif. Dans cet article, nous allons discuter de plusieurs façons de changer la forme d’un tableau pour convertir des lignes en colonnes dans MySQL, ainsi que des exemples et des explications.

    Méthode 1 : Utilisation de la fonction d’agrégation et de la clause GROUP BY

    Une façon de changer la forme d’une table pour convertir des lignes en colonnes dans MySQL est d’utiliser la fonction d’agrégation et la clause GROUP BY. Une fonction d’agrégation est une fonction qui prend un ensemble de valeurs en entrée et renvoie une seule valeur en sortie. Certaines fonctions d’agrégation couramment utilisées dans MySQL sont les suivantes :

    • SUM() : Calcule le nombre total d’un ensemble de valeurs
    • AVG() : Calcule la moyenne d’un ensemble de valeurs
    • MIN() : Renvoie la plus petite valeur d’un ensemble de valeurs
    • MAX() : Renvoie la plus grande valeur d’un ensemble de valeurs
    • COUNT() : Compte le nombre de valeurs présentes dans un ensemble de valeurs

    Une clause GROUP BY est une clause utilisée pour regrouper des lignes qui ont la même valeur dans une ou plusieurs colonnes. La clause GROUP BY est généralement utilisée conjointement avec une fonction d’agrégation pour calculer les valeurs agrégées de chaque groupe.

    Pour modifier le formulaire de la table afin de convertir les lignes en colonnes à l’aide de la fonction d’agrégation et de la clause GROUP BY, nous devons effectuer les étapes suivantes :

    • Spécifiez la colonne qui sera la nouvelle ligne dans le tableau des résultats. Cette colonne est généralement une colonne qui a des valeurs différentes et pas trop. Par exemple, les colonnes d’année, de mois, de catégorie, de type, etc.
    • Spécifiez la colonne qui sera la nouvelle colonne dans la table de résultats. Il s’agit généralement d’une colonne qui a la même valeur ou une valeur limitée pour chaque ligne. Par exemple, les colonnes de nom, de produit, de marque, etc.
    • Spécifiez la fonction d’agrégation qui sera utilisée pour calculer la valeur de chaque nouvelle combinaison de lignes et de colonnes. Cette fonction d’agrégation dépend du type de données et de l’objectif de notre analyse. Par exemple, SUM(), AVG(), MIN(), MAX(), etc.
    • Créez une requête SQL qui utilise la fonction d’agrégation et la clause GROUP BY pour renvoyer la table de résultats souhaitée.

    Prenons un exemple pour mieux comprendre cela. Supposons que nous ayons le tableau suivant qui stocke les données sur les ventes de produits pour chaque mois et chaque catégorie :

    monthcategorysales
    JanA100
    JanB200
    JanC300
    FebA150
    FebB250
    FebC350
    MarA200
    MarB300
    MarC400

    Ce tableau comporte trois colonnes : mois, catégorie et ventes. Nous voulons modifier la forme de ce tableau pour convertir les lignes en colonnes, afin de pouvoir voir les ventes totales pour chaque catégorie et chaque mois dans un seul tableau. Le tableau de résultats que nous voulons est le suivant :

    categoryJanFebMar
    A100150200
    B200250300
    C300350400

    Pour atteindre cet objectif, nous pouvons utiliser la méthode 1 avec les étapes suivantes :

    • Spécifiez la colonne qui sera la nouvelle ligne dans le tableau des résultats. Dans ce cas, la colonne de catégorie sera une nouvelle ligne, car elle a des valeurs différentes et pas trop (A, B, C).
    • Spécifiez la colonne qui sera la nouvelle colonne dans la table de résultats. Dans ce cas, la colonne du mois sera la nouvelle colonne, car elle a la même valeur ou une valeur limitée pour chaque ligne (janvier, février, mars).
    • Spécifiez la fonction d’agrégation qui sera utilisée pour calculer la valeur de chaque nouvelle combinaison de lignes et de colonnes. Dans ce cas, nous utiliserons la fonction SUM() pour calculer les ventes totales pour chaque catégorie et chaque mois.
    • Créez une requête SQL qui utilise la fonction d’agrégation et la clause GROUP BY pour renvoyer la table de résultats souhaitée. Les requêtes SQL que nous pouvons utiliser sont les suivantes :
    SELECT
    category
    SUM(CASE WHEN month ='Jan' THEN sales ELSE 0 END) AS Jan,
    SUM(CASE WHEN month ='Feb' THEN sales ELSE 0 END) AS Feb,
    SUM(CASE WHEN month ='Mar' THEN sales ELSE 0 END) AS Mar
    FROM
    sales_table
    GROUP BY
    category;
    

    Cette requête effectue les opérations suivantes :

    • Sélectionnez la colonne de catégorie dans le tableau sales_table
    • Utilisez les fonctions SUM() et CASE pour calculer les ventes totales pour chaque catégorie et chaque mois. CASE est une instruction conditionnelle qui renvoie une valeur en fonction d’une condition donnée. Dans cette requête, nous utilisons CASE pour vérifier la valeur mensuelle et renvoyer la valeur des ventes le cas échéant, ou 0 dans le cas contraire. Par exemple, SUM(CASE WHEN month =’Jan’ THEN sales ELSE 0 END) renverra le total des ventes de janvier pour chaque catégorie, ou 0 s’il n’y a pas de ventes pour ce mois.
    • Donnez un nom d’alias à chaque nouvelle colonne à l’aide de AS. Alias est un nom alternatif que l’on peut donner à une colonne ou à une table pour faciliter l’écriture et la lecture d’une requête. Dans cette requête, nous donnons un nom d’alias à chaque nouvelle colonne avec un nom de mois correspondant, tel que Jan, Feb et Mar.
    • Utilisez la clause GROUP BY pour regrouper les lignes en fonction de la colonne de catégorie. La clause GROUP BY crée une ligne pour chaque valeur unique de la colonne de catégorie et calcule une valeur agrégée pour toutes les autres colonnes.

    Cette requête générera la table de résultats souhaitée, comme indiqué ci-dessus.

    Dernières articles