Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Jadual Pangsi Menunjukkan Purata Harga Rumah mengikut Kiraan Kejiranan dan Bilik Tidur dalam PostgreSQL?
Masalah: Bagaimanakah kita boleh menjana jadual ringkasan yang menunjukkan purata harga rumah, dipecahkan mengikut kejiranan dan bilangan bilik tidur?
Penyelesaian: Ini melibatkan proses dua langkah menggunakan fungsi crosstab
PostgreSQL (daripada sambungan tablefunc
).
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) AS average_price FROM listings GROUP BY neighborhood, bedrooms ORDER BY neighborhood, bedrooms;</code>
crosstab
: Seterusnya, kami masukkan hasil daripada langkah 1 ke dalam fungsi crosstab
. Fungsi ini mengubah data menjadi jadual pangsi. Argumen kedua menentukan kiraan bilik tidur yang kita inginkan sebagai lajur. Ambil perhatian bahawa anda perlu memasang sambungan tablefunc
jika anda belum melakukannya (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>
Pertanyaan ini menghasilkan jadual pangsi dengan kejiranan sebagai baris dan harga purata untuk 0, 1, 2 dan 3 bilik tidur sebagai lajur. Ingat untuk melaraskan tatasusunan '{0,1,2,3}'
untuk mencerminkan kiraan bilik tidur sebenar yang terdapat dalam jadual listings
anda. Pelakon ::int
memastikan harga purata dianggap sebagai integer; anda mungkin perlu melaraskan ini berdasarkan price
jenis data lajur anda.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Jadual Pangsi Menunjukkan Purata Harga Rumah mengikut Kiraan Kejiranan dan Bilik Tidur dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!