Fungsi Agregat String SQL

Fungsi Agregat String Sql



Jika anda pernah berurusan dengan pangkalan data SQL, anda mungkin biasa dengan fungsi agregat. Ia pada asasnya adalah satu set fungsi yang melakukan pengiraan pada satu set nilai dan mengembalikan hasil tunggal.

Contohnya termasuk fungsi seperti SUM(), AVG(), COUNT(), MAX dan MIN(). Walau bagaimanapun, satu perkara yang anda akan perhatikan tentang fungsi agregat dalam SQL ialah ia menjurus kepada operasi berangka.

Tetapi adakah anda tahu bahawa terdapat fungsi agregat yang berurusan dengan nilai rentetan? Dalam tutorial ini, kita akan melihat fungsi ini, cara ia berfungsi dan cara kita boleh menggunakannya dalam pangkalan data kami.







NOTA: Adalah maklum bahawa kebanyakan fungsi yang dibincangkan dalam siaran ini bukan sebahagian daripada SQL standard. Akibatnya, ia adalah lanjutan daripada pelbagai enjin pangkalan data seperti PostgreSQL, SQL Server, dll.



Apakah Fungsi Agregat Rentetan?

Fungsi agregat rentetan ialah satu set fungsi yang melaksanakan operasi agregat pada set rentetan dalam kumpulan atau baris dan mengembalikan hasil tunggal.



Kami menggunakan fungsi ini terutamanya dengan klausa GROUP BY untuk mengumpulkan baris berdasarkan lajur tertentu dan kemudian mengagregatkan rentetan dalam setiap kumpulan.





Beberapa fungsi agregat rentetan biasa termasuk:

  • GROUP_CONCAT() – PostgreSQL dan MySQL
  • STRING_AGG – Pelayan SQL
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Oracle

Mari kita terokai setiap fungsi dan apa yang disediakannya.



GROUP_CONCAT()

Fungsi GROUP_CONCAT() disokong oleh pangkalan data PostgreSQL dan MySQL. Ia membolehkan kami menggabungkan nilai daripada berbilang baris ke dalam satu rentetan.

Katakan kita mempunyai jadual 'pekerja' seperti berikut:

CIPTA MEJA pekerja (
id_pekerja INT AUTO_INCREMENT KUNCI UTAMA,
nama_pertama VARCHAR(50),
nama akhir VARCHAR(50),
jabatan VARCHAR(50)
);

INSERT INTO pekerja (first_name, last_name, department) NILAI
('Alice', 'Smith', 'Sumber Manusia'),
('Bob', 'Johnson', 'Pemasaran'),
('Charlie', 'Wilson', 'Kewangan'),
('David', 'Brown', 'Jualan'),
('Eva', 'Davis', 'Kejuruteraan');

Pengeluaran:

Jika kami ingin menentukan nama penuh pekerja dengan mengambil nama pertama dan menggabungkan dengan nama keluarga, kami boleh menggunakan fungsi GROUP_CONCAT() seperti yang ditunjukkan dalam contoh berikut:

PILIH
jabatan,
GROUP_CONCAT(first_name, ' ', last_name) SEBAGAI nama_penuh
DARI
pekerja
KUMPULAN OLEH
jabatan;

Dalam kes ini, kami menggunakan fungsi untuk menggabungkan rentetan daripada lajur 'nama_pertama' dan 'nama_akhir', dan rentetan kosong untuk menambah ruang pada nama.

Ini mengandungi senarai pekerja di setiap jabatan.

STRING_AGG

Fungsi ini serupa dengan fungsi GROUP_CONCAT() tetapi ia hanya disokong dalam pangkalan data SQL Server.

Contoh penggunaan adalah seperti berikut:

PILIH
jabatan,
STRING_AGG(nama_pertama, nama_keluarga, ' ') SEBAGAI nama_penuh
DARI
pekerja
KUMPULAN OLEH
jabatan;

Ini melakukan penggabungan rentetan pada lajur yang ditentukan sebagai ruang sebagai pembatas.

ARRAY_AGG

Fungsi ARRAY_AGG hanya tersedia dalam pangkalan data PostgreSQL. Ia membolehkan kami mengagregatkan nilai ke dalam tatasusunan tunggal.

Contohnya adalah seperti berikut:

PILIH
jabatan,
ARRAY_AGG(nama_pertama) SEBAGAI senarai_pekerja
DARI
pekerja
KUMPULAN OLEH
jabatan;

Ini harus mengagregatkan nama pekerja sebagai tatasusunan.

LISTAGG()

Fungsi LISTAGG() hanya tersedia dalam pangkalan data Oracle. Ia membolehkan kami menggabungkan nilai ke dalam satu rentetan dengan pembatas yang ditentukan.

Contohnya adalah seperti berikut:

PILIH jabatan, LISTAGG(first_name, last_name,  ' ') DALAM KUMPULAN (ORDER BY employee_name ASC) SEBAGAI pekerja
DARIPADA pekerja
KUMPULAN MENGIKUT jabatan;

Ini menggabungkan nama pekerja dan pembatas yang ditentukan.

Kesimpulan

Dalam tutorial ini, kami mempelajari tentang fungsi agregat rentetan yang membolehkan kami menyediakan senarai nilai rentetan dan melakukan operasi ke dalam nilai rentetan tunggal yang terhasil.