PostgreSQL

Putar Dengan / Tanpa Tablefunc

Putar Dengan / Tanpa Tablefunc

Jadual Pivot adalah alat yang ampuh untuk menganggarkan, menyusun, dan mengkaji data untuk mencari corak dan tren dengan lebih mudah. Pivot Tables dapat digunakan untuk mengumpulkan, menyusun, menyusun, menyusun semula, mengelompokkan, jumlah, atau rata-rata data dalam set data untuk benar-benar memahami perkaitan dan ketergantungan data. Menggunakan jadual pangsi sebagai ilustrasi adalah kaedah termudah untuk menunjukkan bagaimana kaedah ini beroperasi. PostgreSQL 8.3 dilancarkan beberapa tahun yang lalu, dan versi baru bernama 'meja makan' telah ditambah. Tablefunc adalah komponen yang mengandungi beberapa kaedah yang menghasilkan jadual (iaitu beberapa baris). Pengubahsuaian ini dilengkapi dengan pelbagai ciri yang sangat menarik. Kaedah crosstab, yang akan digunakan untuk membuat jadual pangsi, ada di antaranya. Kaedah crosstab mengambil argumen teks: perintah SQL yang mengembalikan data mentah pada susun atur pertama dan mengembalikan jadual dalam susun atur berikutnya.

Contoh Jadual Pangsi Tanpa JadualFunc:

Untuk mula mengerjakan pivot PostgreSQL dengan modul 'tablefunc', anda harus mencuba membuat jadual pangsi tanpanya. Oleh itu, mari buka shell baris perintah PostgreSQL dan berikan nilai parameter untuk pelayan, pangkalan data, nombor port, nama pengguna, dan kata laluan yang diperlukan. Biarkan parameter ini kosong jika anda ingin menggunakan parameter yang dipilih secara lalai.

Kami akan membuat jadual baru bernama 'Test' dalam pangkalan data 'test' dengan beberapa bidang di dalamnya, seperti yang ditunjukkan di bawah.

>> CREATE TABLE Test (Id int, nama varchar (20), sal int, job varchar (20));

Setelah membuat jadual, sudah waktunya untuk memasukkan beberapa nilai dalam jadual, seperti yang ditunjukkan dari pertanyaan di bawah.

>> INSERT INTO Test (Id, name, sal, job) NILAI (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', 50000, 'Doktor'), (12, 'Raza', 40000, 'Pegawai'), (11, 'Raza', 60000, 'Doktor'), (12, 'Raza', 67000, 'Pegawai'), ( 13, 'Saeed', 85000, 'Penulis'), (13, 'Saeed', 69000, 'Pegawai'), (13, 'Saeed', 90000, 'Doktor');

Anda dapat melihat bahawa data yang berkaitan telah berjaya dimasukkan. Anda dapat melihat jadual ini mempunyai lebih daripada 1 nilai yang sama untuk id, nama dan pekerjaan.

>> PILIH * DARI input;

Mari buat jadual pangsi, yang akan meringkaskan rekod jadual 'Uji' menggunakan pertanyaan di bawah. Perintah menggabungkan nilai yang sama dari lajur 'Id' dan 'nama' dalam satu baris sambil mengambil jumlah nilai lajur 'gaji' untuk data yang sama mengikut 'Id' dan 'nama'. Ini juga menunjukkan berapa kali satu nilai berlaku dalam kumpulan nilai tertentu.

>> PILIH Id, nama, jumlah (sal) sal, jumlah ((pekerjaan = 'Doktor') :: int) Doktor, jumlah ((pekerjaan = 'Penulis') :: int) Penulis, jumlah ((pekerjaan = 'Pegawai ') :: int) "Pegawai" DARI KUMPULAN Ujian MENGIKUT Id, nama;

Contoh Jadual Pangsi Dengan JadualFunc:

Kita akan mulakan dengan menjelaskan titik utama kita dari sudut pandangan yang realistik, dan kemudian kita akan menerangkan pembuatan jadual pangsi dalam langkah yang kita suka. Oleh itu, pertama sekali, anda mesti menambah tiga jadual untuk berfungsi pada pangsi. Jadual pertama yang akan kita buat adalah 'Makeup', yang akan menyimpan maklumat mengenai keperluan solek. Cuba pertanyaan di bawah pada baris perintah untuk membuat jadual ini.

>> BUAT JADUAL JIKA TIDAK ADA Solekan (make_Id int KUNCI PERDANA, p_name VARCHAR (100) TIDAK NULL);

Selepas penciptaan jadual 'Makeup', mari kita tambahkan beberapa rekod padanya. Kami akan melaksanakan pertanyaan yang disenaraikan di bawah di shell untuk menambahkan 10 rekod ke dalam jadual ini.

Kita perlu membuat jadual lain bernama 'pengguna' yang akan menyimpan rekod pengguna yang menggunakan produk tersebut. Jalankan pertanyaan yang dinyatakan di bawah di shell untuk membuat jadual ini.

>> BUAT JADUAL JIKA TIDAK ADA pengguna (user_id int UTAMA, u_name varchar (100) TIDAK NULL);

Kami telah memasukkan 20 rekod untuk jadual 'pengguna' seperti yang ditunjukkan dalam gambar di bawah.

Kami mempunyai satu lagi meja, 'makeup_user', yang akan menyimpan catatan bersama kedua-dua jadual 'Makeup' dan 'pengguna'. Ia mempunyai bidang lain, 'harga', yang akan menjimatkan harga produk. Jadual telah dihasilkan dengan menggunakan pertanyaan yang dinyatakan di bawah.

>> BUAT JADUAL JIKA TIDAK ADA makeup_user (ID int KUNCI PRIMER, Mid int NOT NULL RUJUKAN Makeup (make_Id), Uid int NOT NULL REFERENCES pengguna (user_id), desimal harga (18,2));

Kami telah memasukkan sejumlah 56 rekod dalam jadual ini, seperti yang ditunjukkan dalam gambar.

Mari buat pandangan lebih jauh untuk menggunakannya untuk penjanaan jadual pangsi. Paparan ini menggunakan Gabung INNER untuk memadankan nilai lajur utama utama ketiga-tiga jadual dan mengambil 'nama', 'nama_produk', dan 'kos' produk dari 'pelanggan' meja

>> BUAT PANDANGAN v_makeup_users SEBAGAI PILIH c.u_nama, hlm.p_name, komputer.harga DARI pengguna c INNER JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Makeup p ON pc.Pertengahan = p.buat_Id;

Untuk menggunakan ini, anda mesti terlebih dahulu memasang pakej tablefunc untuk pangkalan data yang ingin anda gunakan. Pakej ini adalah PostgreSQL 9 terbina dalam.1 dan kemudian dikeluarkan dengan menjalankan arahan yang dinyatakan di bawah. Pakej tablefunc telah diaktifkan untuk anda sekarang.

>> BUAT PERLUARAN JIKA TIDAK ADA tablefunc;

Setelah membuat peluasan, sudah tiba masanya untuk menggunakan fungsi Crosstab () untuk membuat jadual pangsi. Oleh itu, kami akan menggunakan pertanyaan berikut di shell baris perintah untuk melakukannya. Pertanyaan ini pertama kali mengambil rekod dari 'View' yang baru dibuat. Rekod ini akan disusun dan dikelompokkan mengikut urutan menaik lajur 'u_name' dan 'p_name'. Kami telah menyenaraikan nama solek mereka untuk setiap pelanggan, yang mereka beli, dan jumlah kos produk yang dibeli di dalam jadual. Kami telah menggunakan operator UNION ALL pada ruangan 'p_name' untuk menjumlahkan semua produk yang dibeli oleh satu pelanggan secara berasingan. Ini akan menjumlahkan semua kos produk yang dibeli oleh pengguna menjadi satu nilai.

Jadual Pivot kami telah siap dan dipaparkan dalam gambar. Anda dapat melihat dengan jelas bahawa beberapa ruang lajur kosong di bawah setiap nama p_ kerana mereka belum membeli produk tersebut.

Kesimpulan:

Kami kini telah belajar dengan cemerlang bagaimana membuat jadual pangsi untuk meringkaskan hasil jadual dengan dan tanpa penggunaan pakej Tablefunc.

HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux Sebelumnya
Banyak pembangun dan penerbit permainan hadir dengan penghapus HD permainan lama untuk memperpanjang usia francais, harap peminat meminta keserasian d...
Cara Menggunakan AutoKey untuk Mengautomasikan Permainan Linux
AutoKey adalah utiliti automasi desktop untuk Linux dan X11, yang diprogramkan dalam Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsi MACRO, ...
Cara Menunjukkan Kaunter FPS dalam Permainan Linux
Permainan Linux mendapat dorongan utama ketika Valve mengumumkan sokongan Linux untuk klien Steam dan permainan mereka pada tahun 2012. Sejak itu, ban...