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 pracownicyOD 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.