SQL String Aggregate Function

Sql String Aggregate Function



Kung nakipag-usap ka na sa mga database ng SQL, malamang na pamilyar ka sa mga pinagsama-samang function. Ang mga ito ay mahalagang hanay ng mga function na nagsasagawa ng mga kalkulasyon sa isang hanay ng mga halaga at nagbabalik ng isang resulta.

Kasama sa isang halimbawa ang mga function tulad ng SUM(), AVG(), COUNT(), MAX, at MIN(). Gayunpaman, ang isang bagay na mapapansin mo tungkol sa pinagsama-samang mga function sa SQL ay ang mga ito ay nakatuon sa mga numerical na operasyon.

Ngunit alam mo ba na may mga pinagsama-samang function na nakikitungo sa mga halaga ng string? Sa tutorial na ito, titingnan natin ang mga function na ito, kung paano gumagana ang mga ito, at kung paano namin magagamit ang mga ito sa aming mga database.







TANDAAN: Isang magandang tandaan na ang karamihan sa mga function na tinalakay sa post na ito ay hindi bahagi ng karaniwang SQL. Bilang isang resulta, sila ay isang extension ng iba't ibang mga database engine tulad ng PostgreSQL, SQL Server, atbp.



Ano ang String Aggregate Function?

Ang mga function ng pinagsama-samang string ay isang hanay ng mga function na nagsasagawa ng mga pagpapatakbo ng pagsasama-sama sa isang hanay ng mga string sa loob ng isang grupo o mga hilera at nagbabalik ng isang resulta.



Pangunahing ginagamit namin ang mga function na ito kasama ang sugnay na GROUP BY para pagpangkatin ang mga row batay sa isang partikular na column at pagkatapos ay pagsama-samahin ang mga string sa bawat pangkat.





Ang ilang karaniwang string aggregate function ay kinabibilangan ng:

  • GROUP_CONCAT() – PostgreSQL at MySQL
  • STRING_AGG – SQL Server
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Oracle

I-explore natin ang bawat function at kung ano ang ibinibigay nito.



GROUP_CONCAT()

Ang GROUP_CONCAT() function ay sinusuportahan ng PostgreSQL at MySQL database. Nagbibigay-daan ito sa amin na pagsamahin ang mga value mula sa maraming row sa isang string.

Ipagpalagay na mayroon kaming talahanayan ng 'mga empleyado' tulad ng sumusunod:

GUMAWA NG MGA empleyado ng TABLE (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
apelyido VARCHAR(50),
departamento VARCHAR(50)
);

INSERT IN TO employees (first_name, last_name, department) VALUES
('Alice', 'Smith', 'Human Resources'),
('Bob', 'Johnson', 'Marketing'),
('Charlie', 'Wilson', 'Finance'),
('David', 'Brown', 'Sales'),
('Eva', 'Davis', 'Engineering');

Output:

Kung gusto naming matukoy ang buong pangalan ng empleyado sa pamamagitan ng pagkuha ng unang pangalan at pagsasama-sama sa apelyido, maaari naming gamitin ang GROUP_CONCAT() function tulad ng ipinakita sa sumusunod na halimbawa:

PUMILI
departamento,
GROUP_CONCAT(first_name, ' ', last_name) BILANG buong_pangalan
MULA SA
mga empleyado
GROUP BY
departamento;

Sa kasong ito, ginagamit namin ang function upang pagsamahin ang mga string mula sa mga column na 'first_name' at 'last_name', at isang walang laman na string upang magdagdag ng puwang sa mga pangalan.

Naglalaman ito ng listahan ng mga empleyado sa bawat departamento.

STRING_AGG

Ang function na ito ay katulad ng GROUP_CONCAT() function ngunit ito ay sinusuportahan lamang sa SQL Server database.

Ang isang halimbawa ng paggamit ay ang mga sumusunod:

PUMILI
departamento,
STRING_AGG(first_name, last_name, ' ') BILANG buong_pangalan
MULA SA
mga empleyado
GROUP BY
departamento;

Ginagawa nito ang string concatenation sa mga tinukoy na column bilang space bilang delimiter.

ARRAY_AGG

Ang ARRAY_AGG function ay magagamit lamang sa PostgreSQL database. Nagbibigay-daan ito sa amin na pagsama-samahin ang mga halaga sa iisang array.

Ang isang halimbawa ay ang sumusunod:

PUMILI
departamento,
ARRAY_AGG(first_name) AS employees_list
MULA SA
mga empleyado
GROUP BY
departamento;

Dapat itong pagsama-samahin ang pangalan ng empleyado bilang isang array.

LISTAGG()

Ang LISTAGG() function ay magagamit lamang sa Oracle database. Nagbibigay-daan ito sa amin na pagsamahin ang mga halaga sa isang string na may tinukoy na delimiter.

Ang isang halimbawa ay ang sumusunod:

PUMILI ng departamento, LISTAGG(pangalan_pangalan, apelyido,  ' ') SA LOOB NG GROUP (ORDER NG employee_name ASC) BILANG mga empleyado
MULA sa mga empleyado
GROUP AYON SA departamento;

Pinagsasama nito ang mga pangalan ng mga empleyado at ang tinukoy na delimiter.

Konklusyon

Sa tutorial na ito, natutunan namin ang tungkol sa mga string aggregate function na nagbibigay-daan sa amin na magbigay ng listahan ng mga value ng string at magsagawa ng operasyon sa iisang resultang string value.