Et eksempel inkluderer funksjoner som SUM(), AVG(), COUNT(), MAX og MIN(). En ting du imidlertid vil legge merke til om aggregerte funksjoner i SQL er at de er rettet mot numeriske operasjoner.
Men visste du at det finnes aggregerte funksjoner som omhandler strengverdier? I denne opplæringen skal vi se på disse funksjonene, hvordan de fungerer, og hvordan vi kan bruke dem i databasene våre.
MERK: Det er en god merknad at de fleste funksjonene som er omtalt i dette innlegget ikke er en del av standard SQL. Som et resultat er de en utvidelse av forskjellige databasemotorer som PostgreSQL, SQL Server, etc.
Hva er strengaggregatfunksjoner?
Aggregerte strengfunksjoner er et sett med funksjoner som utfører aggregeringsoperasjonene på et sett med strenger i en gruppe eller rader og returnerer et enkelt resultat.
Vi bruker hovedsakelig disse funksjonene med GROUP BY-leddet for å gruppere radene basert på en bestemt kolonne og deretter aggregere strengene i hver gruppe.
Noen vanlige strengaggregatfunksjoner inkluderer:
- GROUP_CONCAT() – PostgreSQL og MySQL
- STRING_AGG – SQL Server
- ARRAY_AGG – PostgreSQL
- LISTAGG – Oracle
La oss utforske hver funksjon og hva den gir.
GROUP_CONCAT()
GROUP_CONCAT()-funksjonen støttes av PostgreSQL- og MySQL-databaser. Det lar oss sette sammen verdiene fra flere rader til en enkelt streng.
Anta at vi har en 'ansatte'-tabell som følger:
LAG BORD-ansatte (ansatt_id INT AUTO_INCREMENT PRIMÆR NØKKEL,
fornavn VARCHAR(50),
etternavn VARCHAR(50),
avdeling VARCHAR(50)
);
INSERT INTO ansatte (fornavn, etternavn, avdeling) VERDIER
('Alice', 'Smith', 'Human Resources'),
('Bob', 'Johnson', 'Markedsføring'),
('Charlie', 'Wilson', 'Finans'),
('David', 'Brown', 'Salg'),
('Eva', 'Davis', 'Engineering');
Produksjon:
Hvis vi ønsker å bestemme det fulle navnet til den ansatte ved å ta fornavnet og sette sammen med etternavnet, kan vi bruke funksjonen GROUP_CONCAT() som vist i følgende eksempel:
PLUKKE UTavdeling,
GROUP_CONCAT(fornavn, ' ', etternavn) AS fullt_navn
FRA
ansatte
GRUPPE AV
avdeling;
I dette tilfellet bruker vi funksjonen til å sette sammen strengene fra kolonnene 'fornavn' og 'etternavn', og en tom streng for å legge til et mellomrom til navnene.
Denne inneholder en liste over ansatte i hver avdeling.
STRING_AGG
Denne funksjonen ligner på GROUP_CONCAT()-funksjonen, men den støttes bare i SQL Server-databasen.
Et eksempel på bruk er som følger:
PLUKKE UTavdeling,
STRING_AGG(fornavn, etternavn, ' ') AS fullt_navn
FRA
ansatte
GRUPPE AV
avdeling;
Dette utfører strengsammenkoblingen på de angitte kolonnene som mellomrom som skilletegn.
ARRAY_AGG
ARRAY_AGG-funksjonen er bare tilgjengelig i PostgreSQL-databasen. Det lar oss samle verdiene i en enkelt matrise.
Et eksempel er som følger:
PLUKKE UTavdeling,
ARRAY_AGG(first_name) AS ansatte_liste
FRA
ansatte
GRUPPE AV
avdeling;
Dette bør samle ansattes navn som en matrise.
LISTAGG()
Funksjonen LISTAGG() er bare tilgjengelig i Oracle-databasen. Det lar oss sette sammen verdiene i en enkelt streng med et spesifisert skilletegn.
Et eksempel er som følger:
SELECT department, LISTAGG(first_name, last_name, ' ') INNEN GRUPPE (ORDER BY ansatt_navn ASC) AS ansatteFRA ansatte
GRUPPE FOR avdeling;
Dette setter sammen navnene på de ansatte og det angitte skilletegnet.
Konklusjon
I denne opplæringen lærte vi om strengaggregatfunksjonene som lar oss gi en liste over strengverdier og utføre en operasjon i en enkelt resulterende strengverdi.