Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Jadual Pangsi dalam PostgreSQL untuk Merumuskan Purata Harga Perumahan mengikut Kejiranan dan Bilangan Bilik Tidur?
Menjana Jadual Pangsi dalam PostgreSQL untuk Menganalisis Harga Perumahan
PostgreSQL menawarkan keupayaan hebat untuk ringkasan data, termasuk penciptaan jadual pangsi. Contoh ini menunjukkan cara menjana jadual pangsi yang menunjukkan purata harga perumahan yang dikumpulkan mengikut kejiranan dan bilangan bilik tidur.
Langkah 1: Kira Harga Purata setiap Kiraan Kejiranan dan Bilik Tidur
Pertama, kami mengira harga purata untuk setiap gabungan unik kiraan kejiranan dan bilik tidur:
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS avg_price FROM listings GROUP BY neighborhood, bedrooms ORDER BY neighborhood, bedrooms;</code>
Pertanyaan ini mengumpulkan listings
data jadual mengikut neighborhood
dan bedrooms
, mengira purata price
untuk setiap kumpulan. Hasilnya kemudian dipesan untuk kejelasan.
Langkah 2: Pivot Data Menggunakan crosstab()
Untuk mengubah data agregat menjadi format jadual pangsi, kami menggunakan fungsi 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>
Fungsi crosstab()
mengambil dua hujah: pertanyaan SQL yang menyediakan data agregat (bersarang dalam kes ini untuk kejelasan) dan pertanyaan mentakrifkan kategori untuk lajur jadual pangsi (di sini, mewakili bilangan bilik tidur: 0, 1, 2, dan 3). Alias jadual yang terhasil ct
diberikan nama lajur sewajarnya.
Langkah 3: Mentafsir Keputusan
Jadual pangsi output akan menyerupai ini:
<code>neighborhood | 0 | 1 | 2 | 3 ----------------+---------+---------+---------+--------- downtown | 189000 | 325000 | NULL | 450000 riverview | 250000 | 300000 | 350000 | NULL</code>
Setiap baris mewakili kejiranan dan setiap lajur mewakili kiraan bilik tidur. Nilai mewakili harga purata untuk gabungan kejiranan dan bilik tidur tertentu itu. NULL
menunjukkan tiada penyenaraian ditemui untuk gabungan tertentu itu. Ini memberikan ringkasan yang jelas dan ringkas tentang harga purata perumahan. Ingat untuk melaraskan kategori bilik tidur dalam fungsi unnest
jika data anda termasuk julat bilangan bilik tidur yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Jadual Pangsi dalam PostgreSQL untuk Merumuskan Purata Harga Perumahan mengikut Kejiranan dan Bilangan Bilik Tidur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!