Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengagregatkan Lajur Tunggal dengan Cekap dalam Pertanyaan PostgreSQL dengan Berbilang Lajur?

Bagaimana untuk Mengagregatkan Lajur Tunggal dengan Cekap dalam Pertanyaan PostgreSQL dengan Berbilang Lajur?

Patricia Arquette
Lepaskan: 2024-12-31 13:55:08
asal
821 orang telah melayarinya

How to Efficiently Aggregate a Single Column in PostgreSQL Queries with Multiple Columns?

Cara Mengagregatkan Lajur Tunggal dalam Pertanyaan dengan Berbilang Lajur Tambahan

Dalam PostgreSQL, mengagregatkan satu lajur sambil memasukkan lajur lain dalam pertanyaan boleh menyusahkan. Walau bagaimanapun, terdapat penyelesaian yang tersedia.

Menggunakan Kumpulan Oleh untuk Kunci Utama

PostgreSQL 9.1 dan kemudiannya memudahkan proses. Apabila mengagregatkan dengan GROUP BY, anda hanya perlu memasukkan kunci utama jadual. Oleh itu, jika foo1 ialah kunci utama tbl1, pertanyaan anda boleh dipermudahkan kepada:

SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ')
FROM   tbl1
GROUP  BY 1
ORDER  BY foo7, foo8;
Salin selepas log masuk

Mengagregatkan Sebelum Menyertai

Untuk pertanyaan dengan berbilang jadual dan perhubungan, ia boleh menjadi lebih cekap untuk agregat dahulu dan sertai kemudian. Contohnya:

SELECT t1.foo1, t1.foo2, ...
     , t2.bar1, t2.bar2, ...
     , a.aggregated_col 
FROM   tbl1 t1
LEFT   JOIN tbl2 t2 ON ...
...
LEFT   JOIN (
   SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col
   FROM   agg_tbl a ON ...
   GROUP  BY some_id
   ) a ON a.some_id = ?.some_id
ORDER  BY ...
Salin selepas log masuk

Ini memastikan pengagregatan dilakukan hanya di bahagian pertanyaan yang berkaitan, meningkatkan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengagregatkan Lajur Tunggal dengan Cekap dalam Pertanyaan PostgreSQL dengan Berbilang Lajur?. 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