SQL-strengaggregatfunksjoner

Sql Strengaggregatfunksjoner



Hvis du noen gang har jobbet med SQL-databaser, er du sannsynligvis kjent med aggregerte funksjoner. De er i hovedsak et sett med funksjoner som utfører beregningene på et sett med verdier og returnerer et enkelt resultat.

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 UT
avdeling,
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 UT
avdeling,
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 UT
avdeling,
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 ansatte
FRA 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.