Maison > base de données > tutoriel mysql > Comment créer un tableau croisé dynamique affichant les prix moyens des maisons par quartier et nombre de chambres dans PostgreSQL ?

Comment créer un tableau croisé dynamique affichant les prix moyens des maisons par quartier et nombre de chambres dans PostgreSQL ?

Mary-Kate Olsen
Libérer: 2025-01-13 09:53:43
original
976 Les gens l'ont consulté

How to Create a Pivot Table Showing Average House Prices by Neighborhood and Bedroom Count in PostgreSQL?

Création d'un tableau croisé dynamique dans PostgreSQL pour afficher les prix moyens des logements

Problème :Comment générer un tableau récapitulatif montrant les prix moyens des logements, ventilés par quartier et nombre de chambres ?

Solution : Cela implique un processus en deux étapes utilisant la fonction crosstab de PostgreSQL (à partir de l'extension tablefunc).

  1. Calculer les prix moyens par quartier et nombre de chambres : Tout d'abord, nous déterminons le prix moyen pour chaque combinaison de quartier et de nombre de chambres.
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS average_price
FROM listings
GROUP BY neighborhood, bedrooms
ORDER BY neighborhood, bedrooms;</code>
Copier après la connexion
  1. Utilisez la fonction crosstab : Ensuite, nous introduisons les résultats de l'étape 1 dans la fonction crosstab. Cette fonction transforme les données en tableau croisé dynamique. Le deuxième argument spécifie le nombre de chambres que nous voulons sous forme de colonnes. Notez que vous devrez installer l'extension tablefunc si ce n'est pas déjà fait (CREATE EXTENSION tablefunc;).
<code class="language-sql">SELECT *
FROM crosstab(
    'SELECT neighborhood, bedrooms, AVG(price)::int AS average_price
     FROM listings
     GROUP BY neighborhood, bedrooms
     ORDER BY neighborhood, bedrooms',
    $$SELECT unnest('{0,1,2,3}'::int[]) AS bedrooms$$
) AS ct ("neighborhood" text, "0" int, "1" int, "2" int, "3" int);</code>
Copier après la connexion

Cette requête produit un tableau croisé dynamique avec les quartiers sous forme de lignes et le prix moyen pour 0, 1, 2 et 3 chambres sous forme de colonnes. N'oubliez pas d'ajuster le tableau '{0,1,2,3}' pour refléter le nombre réel de chambres présentes dans votre tableau listings. Le casting ::int garantit que le prix moyen est traité comme un nombre entier ; vous devrez peut-être ajuster cela en fonction du type de données de votre price colonne.

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