Pomóż w opracowaniu witryny, udostępniając artykuł znajomym!

Wprowadzenie do PostgreSQL STRING_AGG()

PostgreSQL obsługuje różne rodzaje funkcji agregujących. Funkcja STRING_AGG() jest jedną z funkcji agregujących, która służy do łączenia listy ciągów i dodaje miejsce do symbolu ogranicznika lub separatora między wszystkimi smyczki. Separator lub symbol ogranicznika nie zostanie uwzględniony na końcu ciągu wyjściowego. Funkcja PostgreSQL STRING_AGG() jest obsługiwana od wersji PostgreSQL 9.0, która służy do wykonywania opcji agregacji związanej z łańcuchem.Do łączenia ciągów możemy używać różnych typów separatorów lub symboli separatorów.

Składnia

Rozważ następującą składnię:

STRING_AGG ( wyrażenie, separator|ogranicznik (kolejność_w_kolejności) )

Wyjaśnienie:

Funkcja STRING_AGG() pobiera dane wejściowe klauzula ORDER BY jest opcjonalna, a pozostałe dwa argumenty są następujące:

  1. expression: To jest ciąg znaków, który jest dowolnym poprawnym wyrażeniem.
  2. separator/ogranicznik: Określa separator/ogranicznik, który będzie używany do łączenia ciągów.

Klauzula ORDER BY jest klauzulą opcjonalną, która definiuje kolejność połączonych wyników łańcuchowych.

Zamówienie ORDER BY ma następującą składnię:

ORDER BY wyrażenie1 {ASC - DESC}, (… )

Jak działa funkcja PostgreSQL STRING_AGG()?

  1. Potrzebne wyrażenie wejściowe powinno być typem danych typu ciąg znaków. Możemy również użyć innych typów danych, ale tylko musimy się upewnić, że jawnie rzutujemy inne typy danych na typ danych typu string.
  2. String_AGG() PostgreSQL zwraca nam wynik w postaci ciągu znaków.
  3. String_AGG() jest zwykle używany z klauzulą GROUP BY, tak jak używamy innych funkcji agregujących PostgreSQL, takich jak MIN(), MAX(), AVG(), SUM() i COUNT() itp.

Przykłady implementacji funkcji PostgreSQL STRING_AGG()

Utworzymy tabelę o nazwach „student” i „kurs” za pomocą instrukcji CREATE TABLE w następujący sposób:

STÓŁ UCZNIÓW:

utwórz studenta tabeli
(
stud_id seryjny KLUCZ PODSTAWOWY,
nazwa stadnina VARCHAR(80) NOT NULL,
stud_grade CHAR(1) NIE NULL,
stud_country VARCHAR(80) NOT NULL,
course_id int NOT NULL
);

TABELA KURSÓW:

utwórz kurs przy stole
(
course_id seryjny KLUCZ PODSTAWOWY,
nazwa_kursu VARCHAR(80) NOT NULL
);

Teraz wstawimy niektóre dane do tabeli „kurs” za pomocą instrukcji INSERT INTO w następujący sposób:

WSTAW DO kursu(nazwa_kursu)
WARTOŚCI
(„Komputer”),
(„Mechaniczny”),
(„cywilny”),
(„Elektryczne”);

Zilustruj wynik powyższej instrukcji INSERT za pomocą następującej instrukcji SQL i migawki.

wybierzz kursu;

Teraz wstawimy niektóre dane do tabeli „student” za pomocą instrukcji INSERT INTO w następujący sposób:

WSTAW UCZNIA(nazwa_studia,klasa_studni,kraj_studni,id_kursu)
WARTOŚCI
(„Kowalski”, „A”, „USA”, 1),
(„Johnson”, „B”, „USA”, 2),
(„Williams”, „C”, „USA”, 3),
(„Jones”, „C”, „Kanada”,1),
(„Brązowy”, „B”, „Kanada”, 2),
(„Davis”, „A”, „Kanada”, 3),
(„Aarnav”, „A”, „Indie”, 1),
(„Aarush”, „B”, „Indie”, 2),
(„Aayush”, „C”, „Indie”, 3),
(„Abdul”, „C”, „ZEA”, 1),
(„Ahmed”, „A”, „ZEA”, 3),
(„Ying”, „A”, „Chiny”,1),
(„Yue”, „B”, „Chiny”, 2),
(„Feng”, „C”, „Chiny”,3),
(„Mian”, „C”, „Korea Południowa”,1),
(„Fei”, „B”, „Korea Południowa”, 2),
(„Hong”, „A”, „Korea Południowa”,3);

Zilustruj wynik powyższej instrukcji INSERT za pomocą następującej instrukcji SQL i migawki.

wybierzod ucznia;

"SELECT c.course_name AS nazwa kursu, s.stud_name AS nazwa studenta"
Z kursu c PRAWO DOŁĄCZ DO UCZNIÓW NA c.course_id=s.course_id
ZAMÓW PRZEZ 1;

Zilustruj wynik powyższej instrukcji, używając następującej migawki.

W powyższym przykładzie wynikowy zrzut ma każdy wiersz jako osobny wpis dla kursu dopasowanego do kursu ucznia.

Możemy łączyć imiona uczniów za pomocą funkcji STRING_AGG(), modyfikując powyższą instrukcję SQL w następujący sposób:

WYBIERZ
"crs.course_name AS nazwa kursu,
""string_agg(stud.stud_name, &39;, &39;) JAKO lista uczniów
"Z kursu crs
DOŁĄCZ DO STUDENTÓW NA crs.course_id=stud.course_id
GRUPUJ WEDŁUG 1
ZAMÓW PRZEZ 1;

Zilustruj wynik powyższej instrukcji, używając następującej migawki.

SELECT stud_grade, STRING_AGG(stud_name,', ') AS StudentsPerGrade
OD studenta
GROUP BY stud_grade
ZAMÓW PRZEZ 1 ;

Zilustruj wynik powyższej instrukcji, używając następującej migawki.

W powyższym przykładzie wynikowa migawka pokazuje nam listę uczniów połączonych przecinkami, które mają podobną ocenę.

"SELECT STRING_AGG(nazwa_studni, &39;, &39;) JAKO nazwy studentów, kraj_studni"
OD studenta
GRUPA WG stada_kraju;

Zilustruj wynik powyższej instrukcji, używając następującej migawki.

"

W powyższym przykładzie widzimy, że wszyscy uczniowie należący do tego samego kraju są zgrupowani i połączeni separatorem przecinkowym

Zalety

  1. Możemy kontrolować kolejność wyników za pomocą klauzuli ORDER BY.
  2. Funkcja PostgreSQL STRING_AGG() zwraca wynik w formacie ciągu.
  3. Możemy użyć funkcji STRING_AGG(), aby połączyć wszystkie ciągi i dodać symbol ogranicznika lub separator pomiędzy nimi.
  4. String_AGG() PostgreSQL obsługuje różne typy symboli ograniczników lub separatorów i nie zawiera symbolu ogranicznika ani separatora na końcu ciągu.

Wniosek

Mamy nadzieję, że z powyższego artykułu zrozumiałeś, jak używać funkcji PostgreSQL STRING_AGG() i jak działa funkcja PostgreSQL STRING_AGG(). Dodaliśmy również kilka przykładów funkcji PostgreSQL STRING_AGG(), aby lepiej ją zrozumieć.

Pomóż w opracowaniu witryny, udostępniając artykuł znajomym!