SQL virknes apkopotās funkcijas

Sql Virknes Apkopotas Funkcijas



Ja esat kādreiz nodarbojies ar SQL datu bāzēm, iespējams, esat iepazinies ar apkopotajām funkcijām. Tās būtībā ir funkciju kopums, kas veic aprēķinus par vērtību kopu un atgriež vienu rezultātu.

Piemērā ir iekļautas tādas funkcijas kā SUM(), AVG(), COUNT(), MAX un MIN(). Tomēr viena lieta, ko pamanīsit par SQL apkopotajām funkcijām, ir tā, ka tās ir vērstas uz skaitliskām darbībām.

Bet vai zinājāt, ka ir apkopotas funkcijas, kas nodarbojas ar virkņu vērtībām? Šajā apmācībā mēs apskatīsim šīs funkcijas, to darbību un to, kā mēs varam tās izmantot savās datubāzēs.







PIEZĪME. Ir laba piezīme, ka lielākā daļa funkciju, kas ir apspriestas šajā ziņojumā, neietilpst standarta SQL. Rezultātā tie ir dažādu datu bāzes dzinēju paplašinājumi, piemēram, PostgreSQL, SQL Server utt.



Kas ir virkņu apkopotās funkcijas?

Virkņu apkopošanas funkcijas ir funkciju kopa, kas veic apkopošanas darbības virkņu kopai grupā vai rindās un atgriež vienu rezultātu.



Mēs galvenokārt izmantojam šīs funkcijas ar klauzulu GROUP BY, lai grupētu rindas, pamatojoties uz noteiktu kolonnu, un pēc tam apkopotu virknes katrā grupā.





Dažas izplatītas virkņu apkopošanas funkcijas ietver:

  • GROUP_CONCAT() — PostgreSQL un MySQL
  • STRING_AGG — SQL serveris
  • ARRAY_AGG — PostgreSQL
  • LISTAGG – Orākuls

Izpētīsim katru funkciju un to, ko tā nodrošina.



GROUP_CONCAT()

Funkciju GROUP_CONCAT() atbalsta PostgreSQL un MySQL datu bāzes. Tas ļauj mums apvienot vērtības no vairākām rindām vienā virknē.

Pieņemsim, ka mums ir šāda “darbinieku” tabula:

CREATE TABLE darbinieki (
darbinieka_id INT AUTO_INCREMENT PRIMARY KEY,
vārds VARCHAR(50),
uzvārds VARCHAR(50),
nodaļa VARCHAR (50)
);

INSERT INTO darbinieku (vārds, uzvārds, nodaļa) VĒRTĪBAS
(“Alise”, “Smits”, “Cilvēkresursi”)
('Bob', 'Džonsons', 'Mārketings'),
('Čārlijs', 'Vilsons', 'finanses'),
(“Deivids”, “Brūns”, “Pārdošana”)
('Eva', 'Dāvis', 'Inženierzinātnes');

Izvade:

Ja mēs vēlamies noteikt darbinieka pilnu vārdu, ņemot vārdu un savienojot to ar uzvārdu, mēs varam izmantot funkciju GROUP_CONCAT(), kā parādīts šajā piemērā:

ATLASĪT
nodaļa,
GROUP_CONCAT(vārds, ' ', uzvārds) AS pilns_vārds
NO
darbiniekiem
GROUP BY
nodaļa;

Šajā gadījumā mēs izmantojam funkciju, lai savienotu virknes no kolonnām “first_name” un “last_name”, un tukšu virkni, lai nosaukumiem pievienotu atstarpi.

Tajā ir katras nodaļas darbinieku saraksts.

STRING_AGG

Šī funkcija ir līdzīga funkcijai GROUP_CONCAT(), taču tā tiek atbalstīta tikai SQL Server datu bāzē.

Lietošanas piemērs ir šāds:

ATLASĪT
nodaļa,
STRING_AGG(vārds, uzvārds, ' ') AS pilns_vārds
NO
darbiniekiem
GROUP BY
nodaļa;

Tas veic virknes savienošanu norādītajās kolonnās kā atstarpi kā atdalītāju.

ARRAY_AGG

Funkcija ARRAY_AGG ir pieejama tikai PostgreSQL datu bāzē. Tas ļauj mums apkopot vērtības vienā masīvā.

Piemērs ir šāds:

ATLASĪT
nodaļa,
ARRAY_AGG(first_name) AS darbinieku_saraksts
NO
darbiniekiem
GROUP BY
nodaļa;

Tam vajadzētu apkopot darbinieka vārdu kā masīvu.

LISTAGG()

Funkcija LISTAGG() ir pieejama tikai Oracle datu bāzē. Tas ļauj mums savienot vērtības vienā virknē ar noteiktu atdalītāju.

Piemērs ir šāds:

ATLASĪT nodaļu, LISTAGG(vārds, uzvārds,  ' ') GRUPĀ (ORDER BY darbinieka_nosaukums ASC) AS darbinieki
NO darbiniekiem
GROUP BY nodaļa;

Tas apvieno darbinieku vārdus un norādīto atdalītāju.

Secinājums

Šajā apmācībā mēs uzzinājām par virkņu apkopošanas funkcijām, kas ļauj nodrošināt virknes vērtību sarakstu un veikt darbību ar vienu iegūto virknes vērtību.