Funkcje agregujące ciągi SQL

Funkcje Agregujace Ciagi Sql



Jeśli kiedykolwiek miałeś do czynienia z bazami danych SQL, prawdopodobnie znasz funkcje agregujące. Zasadniczo są to zestawy funkcji, które wykonują obliczenia na zestawie wartości i zwracają pojedynczy wynik.

Przykład obejmuje funkcje takie jak SUM(), AVG(), COUNT(), MAX i MIN(). Jednakże jedną rzeczą, którą zauważysz w przypadku funkcji agregujących w SQL, jest to, że są one nastawione na operacje numeryczne.

Ale czy wiesz, że istnieją funkcje agregujące, które zajmują się wartościami łańcuchowymi? W tym samouczku przyjrzymy się tym funkcjom, sposobowi ich działania i sposobom wykorzystania ich w naszych bazach danych.







UWAGA: Warto zauważyć, że większość funkcji omówionych w tym poście nie jest częścią standardowego języka SQL. W rezultacie stanowią rozszerzenie różnych silników baz danych, takich jak PostgreSQL, SQL Server itp.



Co to są funkcje agregujące ciągi?

Funkcje agregujące ciągi to zestaw funkcji, które wykonują operacje agregacji na zestawie ciągów w grupie lub wierszach i zwracają pojedynczy wynik.



Używamy tych funkcji głównie z klauzulą ​​GROUP BY do grupowania wierszy na podstawie określonej kolumny, a następnie agregowania ciągów w każdej grupie.





Niektóre typowe funkcje agregujące ciągi obejmują:

  • GROUP_CONCAT() – PostgreSQL i MySQL
  • STRING_AGG – serwer SQL
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Wyrocznia

Przyjrzyjmy się każdej funkcji i temu, co zapewnia.



GRUPA_CONCAT()

Funkcja GROUP_CONCAT() jest obsługiwana przez bazy danych PostgreSQL i MySQL. Pozwala nam to połączyć wartości z wielu wierszy w jeden ciąg.

Załóżmy, że mamy następującą tabelę „pracownicy”:

UTWÓRZ TABELI pracowników (
id_pracownika INT AUTO_INCREMENT KLUCZ PODSTAWOWY,
imię VARCHAR(50),
nazwisko VARCHAR(50),
dział VARCHAR(50)
);

WPISAĆ WARTOŚCI pracowników (imię, nazwisko, dział).
(„Alicja”, „Smith”, „Zasoby ludzkie”),
(„Bob”, „Johnson”, „Marketing”),
(„Charlie”, „Wilson”, „Finanse”),
(„Dawid”, „Brązowy”, „Sprzedaż”),
(„Ewa”, „Davis”, „Inżynieria”);

Wyjście:

Jeśli chcemy ustalić pełne imię i nazwisko pracownika poprzez wzięcie imienia i połączenie go z nazwiskiem, możemy skorzystać z funkcji GROUP_CONCAT(), jak pokazano w poniższym przykładzie:

WYBIERAĆ
dział,
GROUP_CONCAT(imię, ' ', nazwisko) AS pełna nazwa
Z
pracownicy
GRUPUJ WEDŁUG
dział;

W tym przypadku używamy funkcji do połączenia ciągów znaków z kolumn „imię” i „nazwisko” oraz pustego ciągu znaków w celu dodania spacji do nazw.

Zawiera listę pracowników w każdym dziale.

STRING_AGG

Ta funkcja jest podobna do funkcji GROUP_CONCAT(), ale jest obsługiwana tylko w bazie danych SQL Server.

Przykładowe użycie jest następujące:

WYBIERAĆ
dział,
STRING_AGG(imię, nazwisko, ' ') AS imię_imie
Z
pracownicy
GRUPUJ WEDŁUG
dział;

Spowoduje to konkatenację ciągów w określonych kolumnach jako spację jako ogranicznik.

ARRAY_AGG

Funkcja ARRAY_AGG jest dostępna tylko w bazie danych PostgreSQL. Pozwala nam to agregować wartości w jedną tablicę.

Przykład jest następujący:

WYBIERAĆ
dział,
ARRAY_AGG(imię) AS lista_pracowników
Z
pracownicy
GRUPUJ WEDŁUG
dział;

Powinno to agregować nazwisko pracownika jako tablicę.

LISTAGG()

Funkcja LISTAGG() jest dostępna tylko w bazie danych Oracle. Pozwala nam połączyć wartości w jeden ciąg znaków z określonym ogranicznikiem.

Przykład jest następujący:

WYBIERZ dział, LISTAGG(imię, nazwisko,  ' ') W GRUPIE (ZAMÓWIENIE WG NAZWY_PRACOWNIKA ASC) AS pracownicy
OD pracowników
GRUPUJ WG działu;

Spowoduje to połączenie nazwisk pracowników i określonego ogranicznika.

Wniosek

W tym samouczku dowiedzieliśmy się o funkcjach agregujących ciągi, które pozwalają nam udostępnić listę wartości ciągów i wykonać operację na pojedynczej wynikowej wartości ciągu.