Buat jadual pangsi menggunakan PostgreSQL dan fungsi tab silang()
Analisis data selalunya melibatkan penerokaan hubungan antara pembolehubah yang berbeza. Jadual pangsi ialah alat yang berkuasa untuk meringkaskan dan mempersembahkan data, menjadikannya mudah untuk mengenal pasti arah aliran dan corak. Artikel ini menunjukkan cara membuat jadual pangsi menggunakan PostgreSQL.
Soalan:
Andaikan anda mempunyai jadual bernama listings
dalam PostgreSQL dengan lajur berikut:
id
neighborhood
(kejiranan)bedrooms
(bilangan bilik tidur)price
(Harga)Anda perlu membuat pertanyaan tab silang yang memaparkan harga purata untuk setiap kejiranan, dengan bilangan bilik tidur sebagai lajur dan kejiranan sebagai baris. Output hendaklah dalam format berikut:
街区 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
市中心 | 189000 | 325000 | - | 450000 |
河景 | 250000 | 300000 | 350000 | - |
Penyelesaian:
Untuk mencipta jadual pangsi dalam PostgreSQL, anda boleh menggunakan AVG()
fungsi agregat dalam kombinasi dengan fungsi tablefunc
yang disediakan oleh modul crosstab()
. Berikut ialah panduan langkah demi langkah:
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price) FROM listings GROUP BY 1, 2 ORDER BY 1, 2;</code>
<code class="language-sql">SELECT * FROM crosstab( 'SELECT neighborhood, bedrooms, AVG(price)::INT FROM listings GROUP BY 1, 2 ORDER BY 1, 2;' , $$SELECT UNNEST('{0,1,2,3}'::INT[])::TEXT$$ ) AS ct ("neighborhood" TEXT, "0" INT, "1" INT, "2" INT, "3" INT);</code>
Penjelasan:
crosstab()
mengambil sebagai input hasil pertanyaan pertama dan mencipta jadual pangsi. Rentetan yang dihantar ke fungsi crosstab()
menentukan nilai lajur untuk diletakkan dalam pengepala. ::INT
digunakan untuk menukar hasil AVG()
kepada integer untuk mendapatkan nilai bulat dalam output. Nota tambahan:
tablefunc
mesti dipasang untuk menggunakan fungsi crosstab()
. FILTER
dengan fungsi agregat untuk mencipta jadual pangsi, tetapi ia biasanya lebih perlahan daripada fungsi crosstab()
. Atas ialah kandungan terperinci Bagaimana untuk Mencipta Jadual Pangsi dalam PostgreSQL Menggunakan Fungsi tab silang()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!