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

Comment créer un tableau croisé dynamique dans PostgreSQL pour résumer les prix moyens des logements par quartier et nombre de chambres ?

Linda Hamilton
Libérer: 2025-01-13 06:47:43
original
353 Les gens l'ont consulté

How to Create a Pivot Table in PostgreSQL to Summarize Average Housing Prices by Neighborhood and Number of Bedrooms?

Génération de tableaux croisés dynamiques dans PostgreSQL pour analyser les prix des logements

PostgreSQL offre de puissantes fonctionnalités de synthèse des données, notamment la création de tableaux croisés dynamiques. Cet exemple montre comment générer un tableau croisé dynamique affichant les prix moyens des logements regroupés par quartier et nombre de chambres.

Étape 1 : Calculer les prix moyens par quartier et le nombre de chambres

Tout d'abord, nous calculons le prix moyen pour chaque combinaison unique de quartier et de nombre de chambres :

<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS avg_price
FROM listings
GROUP BY neighborhood, bedrooms
ORDER BY neighborhood, bedrooms;</code>
Copier après la connexion

Cette requête regroupe les données de la table listings par neighborhood et bedrooms, en calculant la moyenne price pour chaque groupe. Les résultats sont ensuite ordonnés pour plus de clarté.

Étape 2 : faire pivoter les données à l'aide de crosstab()

Pour transformer les données agrégées au format tableau croisé dynamique, nous utilisons la fonction crosstab() :

<code class="language-sql">SELECT *
FROM crosstab(
  'SELECT neighborhood, bedrooms, avg_price
   FROM (
     SELECT neighborhood, bedrooms, AVG(price) AS avg_price
     FROM listings
     GROUP BY neighborhood, bedrooms
     ORDER BY neighborhood, bedrooms
   )',
  $$SELECT unnest('{0,1,2,3}'::int[])::text$$
) AS ct ("neighborhood" text, "0" int, "1" int, "2" int, "3" int);</code>
Copier après la connexion

La fonction crosstab() prend deux arguments : la requête SQL fournissant les données agrégées (imbriquées dans ce cas pour plus de clarté), et une requête définissant les catégories pour les colonnes du tableau croisé dynamique (ici, représentant le nombre de chambres : 0, 1, 2 et 3). L'alias de table résultant ct se voit attribuer des noms de colonnes en conséquence.

Étape 3 : Interprétation des résultats

Le tableau croisé dynamique de sortie ressemblera à ceci :

<code>neighborhood  | 0       | 1       | 2       | 3
----------------+---------+---------+---------+---------
downtown      | 189000  | 325000  | NULL     | 450000
riverview     | 250000  | 300000  | 350000  | NULL</code>
Copier après la connexion

Chaque ligne représente un quartier et chaque colonne représente un nombre de chambres. Les valeurs représentent le prix moyen pour cette combinaison spécifique de quartier et de chambre. NULL indique qu'aucune annonce n'a été trouvée pour cette combinaison particulière. Cela fournit un résumé clair et concis des prix moyens des logements. N'oubliez pas d'ajuster les catégories de chambres dans la fonction unnest si vos données incluent une plage différente de nombres de chambres.

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