Une table de pivot est un outil puissant pour estimer, compiler et examiner les données pour trouver des modèles et des tendances encore plus faciles. Les tables de pivot peuvent être utilisées pour agréger, trier, organiser, réorganiser, groupe, total ou moyens moyennes dans un ensemble de données pour comprendre véritablement les associations de données et les dépendances. L'utilisation d'une table pivot comme illustration est le moyen le plus simple de démontrer comment fonctionne cette méthode. Postgresql 8.3 a été lancé il y a quelques années et une nouvelle version nommée 'table' était ajouté. Table est un composant qui contient plusieurs méthodes qui donnent des tables (c'est-à-dire plusieurs lignes). Cette modification est livrée avec une gamme très cool de fonctionnalités. La méthode de crosstab, qui sera utilisée pour créer des tables de pivot, fait partie de eux. La méthode Crosstab prend un argument textuel: une commande SQL qui renvoie les données brutes dans la première mise en page et renvoie un tableau dans la disposition suivante.
Exemple de table de pivot sans table
Pour commencer à travailler sur le pivot postgresql avec le module «TableFunc», vous devez essayer de faire une table de pivot sans lui. Ouvrez donc le shell de ligne de commande PostgreSQL et fournissons les valeurs des paramètres pour le serveur, la base de données, le numéro de port, le nom d'utilisateur et le mot de passe requis. Laissez ces paramètres vides si vous souhaitez utiliser les paramètres sélectionnés par défaut.
Nous créerons un nouveau tableau nommé «Test» dans la base de données «test» avec certains champs, comme affiché ci-dessous.
>> Créer un test de table (id int, name varchar (20), sal int, job varchar (20));Après avoir créé une table, il est temps d'insérer certaines valeurs dans le tableau, comme indiqué à partir de la requête ci-dessous.
>> Insérer dans le test (id, nom, sal, travail) valeurs (11, «aqsa», 45000, «écrivain»), (11, «aqsa», 48000, «officier»), (11, «aqsa», 50000, «Doctor»), (12, «Raza», 40000, «Officier»), (11, «Raza», 60000, «Doctor»), (12, «Raza», 67000, «Officier»), ( 13, «Saeed», 85000, «écrivain»), (13, «Saeed», 69000, «officier»), (13, «Saeed», 90000, «docteur»);Vous pouvez voir que les données pertinentes ont été insérées avec succès. Vous pouvez voir ce tableau a plus de 1 des mêmes valeurs pour l'identification, le nom et le travail.
>> sélectionner * dans l'entrée;Créons une table de pivot, qui résumera l'enregistrement du tableau «test» en utilisant la requête ci-dessous. La commande fusionne les mêmes valeurs de la colonne «id» et «name» en une ligne tout en prenant la somme des valeurs de colonne «salaire» pour les mêmes données selon «id» et «nom». Il est également révélateur combien de fois une valeur s'est produite dans l'ensemble particulier de valeurs.
>> Sélectionnez ID, nom, somme (Sal) Sal, sum ((job = 'docteur') :: int) Docteur, sum ((job = 'écrivain') :: int) scénariste, sum ((job = 'officier ') :: int) "Officier" du groupe de test par id, nom;Exemple de table de pivot avec tablefunc:
Nous allons commencer par expliquer notre point principal d'un point de vue réaliste, puis nous décrirons la création de table de pivot dans les étapes que nous aimons. Donc, tout d'abord, vous devez ajouter trois tables pour travailler sur un pivot. Le premier tableau que nous allons créer est le «maquillage», qui stockera des informations concernant le maquillage essentiels. Essayez la requête ci-dessous dans le shell de ligne de commande pour créer ce tableau.
>> Créer une table s'il n'est pas existant de maquillage (make_id int touche primaire, p_name varchar (100) pas null);Après la création de la table «maquillage», ajoutons-y quelques enregistrements. Nous exécuterons la requête ci-dessous dans le shell pour ajouter 10 enregistrements à ce tableau.
Nous devons créer un autre tableau nommé «utilisateurs» qui va conserver les enregistrements des utilisateurs à l'aide de ces produits. Exécutez la requête indiquée ci-dessous dans le shell pour créer ce tableau.
>> Créer une table si elle n'existe pas les utilisateurs (User_ID INT Primary Key, u_name varchar (100) pas null);Nous avons inséré les 20 enregistrements pour les «utilisateurs» du tableau comme indiqué dans l'image ci-dessous.
Nous avons une autre table, «Makeup_user», qui tiendra les enregistrements mutuels du tableau «maquillage» et «utilisateurs». Il a un autre champ, «prix», ce qui économisera le prix du produit. Le tableau a été généré en utilisant la requête ci-dessous indiquée.
>> Créer une table s'il n'est pas existant MakeUp_User (id int touche primaire, mid int not null références maquillage (make_id), uid int nul null références utilisateurs (user_id), prix décimal (18,2));Nous avons inséré un total de 56 enregistrements dans ce tableau, comme indiqué sur l'image.
Créons une vue plus loin pour l'utiliser pour la génération d'une table de pivot. Cette vue utilise la jointure intérieure pour correspondre aux valeurs de colonne de clé primaire des trois tables et récupérer le «nom», «product_name», et le «coût» d'un produit d'un tableau «clients»
>> Créer une vue V_MAKEUP_USERS comme sélectionner C.u_name, p.P_name, PC.Prix des utilisateurs C Inner Rejoignez PC MAKUP_USER sur C.user_id = pc.UID Inner Join Maquillage P sur PC.Mi-= p.Make_id;Pour l'utiliser, vous devez d'abord installer le package TableFunc pour la base de données que vous souhaitez utiliser. Ce package est intégré PostgreSQL 9.1 et plus tard libéré en exécutant la commande ci-dessous. Le package TableFunc a été activé pour vous maintenant.
>> Créer une extension s'il n'existe pas TableFunc;Après avoir créé l'extension, il est temps d'utiliser la fonction Crosstab () pour créer une table de pivot. Nous utiliserons donc la requête suivante dans le shell de ligne de commande pour le faire. Cette requête rapporte d'abord l'enregistrement de la «vue» nouvellement créée. Ces enregistrements seront commandés et regroupés par l'ordre croissant des colonnes 'u_name' et 'p_name'. Nous avons répertorié leur nom de maquillage pour chaque client, qu'ils ont acheté et le coût total des produits achetés dans le tableau. Nous avons appliqué l'opérateur Union All sur la colonne 'P_name' pour résumer tous les produits achetés par un client séparément. Cela résumera tous les coûts des produits achetés par un utilisateur en une seule valeur.
Notre table pivot a été prête et affichée dans l'image. Vous pouvez clairement voir que certains espaces de colonne sont vides sous chaque p_name car ils n'ont pas acheté ce produit particulier.
Conclusion:
Nous avons maintenant brillamment appris à créer une table de pivot pour résumer les résultats des tableaux avec et sans l'utilisation du package de table.