Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencipta Jadual Pangsi dalam PostgreSQL Menggunakan Fungsi tab silang()?

Bagaimana untuk Mencipta Jadual Pangsi dalam PostgreSQL Menggunakan Fungsi tab silang()?

Linda Hamilton
Lepaskan: 2025-01-13 12:13:44
asal
162 orang telah melayarinya

How to Create Pivot Tables in PostgreSQL Using the crosstab() Function?

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:

  1. Kira harga purata bagi setiap bilangan bilik tidur:
<code class="language-sql">SELECT neighborhood, bedrooms, AVG(price)
FROM listings
GROUP BY 1, 2
ORDER BY 1, 2;</code>
Salin selepas log masuk
  1. Buat pertanyaan tab silang:
<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>
Salin selepas log masuk

Penjelasan:

  • Pertanyaan pertama mengira harga purata setiap bilangan bilik tidur dalam setiap kejiranan.
  • Fungsi
  • crosstab() mengambil sebagai input hasil pertanyaan pertama dan mencipta jadual pangsi. Rentetan yang dihantar ke fungsi crosstab() menentukan nilai lajur untuk diletakkan dalam pengepala.
  • Barisan
  • ::INT digunakan untuk menukar hasil AVG() kepada integer untuk mendapatkan nilai bulat dalam output.

Nota tambahan:

  • Modul tablefunc mesti dipasang untuk menggunakan fungsi crosstab().
  • Anda juga boleh menggunakan klausa FILTER dengan fungsi agregat untuk mencipta jadual pangsi, tetapi ia biasanya lebih perlahan daripada fungsi crosstab().
  • Terdapat pelbagai kaedah dan sambungan lain dalam PostgreSQL yang boleh digunakan untuk membuat jadual pangsi. Sila rujuk dokumentasi untuk mencari penyelesaian yang paling sesuai dengan keperluan khusus anda.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan