Aby zrozumieć metodę agregacji ARRAY_Agg(), musisz wykonać kilka przykładów. W tym celu otwórz powłokę wiersza poleceń PostgreSQL. Jeśli chcesz włączyć inny serwer, zrób to, podając jego nazwę. W przeciwnym razie pozostaw puste miejsce i naciśnij przycisk Enter, aby przejść do bazy danych. Jeśli chcesz użyć domyślnej bazy danych, e.sol., Postgres, a następnie pozostaw go bez zmian i naciśnij Enter; w przeciwnym razie wpisz nazwę bazy danych, e.sol., „Test”, jak pokazano na poniższym obrazku. Jeśli chcesz użyć innego portu, napisz go, w przeciwnym razie pozostaw go bez zmian i naciśnij Enter, aby kontynuować. Poprosi Cię o dodanie nazwy użytkownika, jeśli chcesz przełączyć się na inną nazwę użytkownika. Dodaj nazwę użytkownika, jeśli chcesz, w przeciwnym razie po prostu naciśnij „Enter”. Na koniec musisz podać swoje aktualne hasło użytkownika, aby zacząć korzystać z wiersza poleceń, używając tego konkretnego użytkownika, jak poniżej. Po pomyślnym wprowadzeniu wszystkich wymaganych informacji możesz już iść.
Użycie ARRAY_AGG w pojedynczej kolumnie:
Rozważ tabelę „osoba” w bazie danych „test” mającą trzy kolumny; „id”, „imię” i „wiek”. Kolumna „id” zawiera identyfikatory wszystkich osób. Podczas gdy pole „imię” zawiera nazwiska osób, a kolumna „wiek” wiek wszystkich osób all.
>> WYBIERZ * OD osoby;
W zależności od tabeli narzutu musimy zastosować metodę agregującą ARRAY_AGG, aby poprzez kolumnę „nazwa” zwrócić listę tablicy wszystkich nazw tabeli. Dzięki temu musisz użyć funkcji ARRAY_AGG() w zapytaniu SELECT, aby pobrać wynik w postaci tablicy. Wypróbuj podane zapytanie w powłoce poleceń i uzyskaj wynik. Jak widać, mamy poniższą kolumnę wyjściową „array_agg” z nazwami wymienionymi w tablicy dla tego samego zapytania.
>> SELECT ARRAY_AGG(imię) FROM osoby;
Użycie ARRAY_AGG w wielu kolumnach z klauzulą ORDER BY:
Przykład 01:
Stosując funkcję ARRAY_AGG do wielu kolumn przy użyciu klauzuli ORDER BY, rozważ tę samą tabelę „osoba” w „teście” bazy danych, która ma trzy kolumny; „id”, „imię” i „wiek”. W tym przykładzie użyjemy klauzuli GROUP BY.
>> WYBIERZ * OD osoby;
Połączyliśmy wynik zapytania SELECT w listę tablicową, używając dwóch kolumn „imię” i „wiek”. W tym przykładzie użyliśmy spacji jako znaku specjalnego, który do tej pory był używany do łączenia obu tych kolumn. Z drugiej strony pobieraliśmy osobno kolumnę „id”. Wynik połączonej tablicy zostanie wyświetlony w kolumnie „persondata” w czasie wykonywania. Zestaw wyników zostanie najpierw pogrupowany według „id” osoby i posortowany w kolejności rosnącej pola „id”. Wypróbujmy poniższe polecenie w powłoce i zobaczmy sami wyniki. Jak widać, mamy osobną tablicę dla każdej połączonej wartości imienia i wieku na poniższym obrazku.
>> SELECT id, ARRAY_AGG (imię ||"|| wiek) jako dane osobowe FROM osoby GROUP BY id ORDER BY id;
Przykład 02:
Rozważmy nowo utworzoną tabelę „Pracownik” w ramach „testu” bazy danych, która ma pięć kolumn; „id”, „imię”, „wynagrodzenie”, „wiek” i „e-mail”. Tabela przechowuje wszystkie dane o 5 Pracownikach pracujących w firmie. W tym przykładzie użyjemy znaku specjalnego „-”, aby połączyć dwa pola zamiast używać spacji, korzystając z klauzul GROUP BY i ORDER BY.
>> WYBIERZ * Z Pracownik;
Łączymy dane z dwóch kolumn „name” i „email” w tablicy, używając między nimi „-”. Tak jak poprzednio, wyraźnie wyodrębniamy kolumnę „id”. Połączone wyniki kolumn będą wyświetlane jako „emp” w czasie wykonywania run. Zestaw wyników zostanie najpierw złożony przez „id” osoby, a następnie zostanie uporządkowany w porządku rosnącym w kolumnie „id”. Spróbujmy bardzo podobnego polecenia w powłoce z drobnymi zmianami i zobaczmy konsekwencje. Z poniższego wyniku uzyskałeś odrębną tablicę dla każdej połączonej wartości nazwa-e-mail przedstawionej na obrazku, podczas gdy znak „-” jest używany w każdej wartości.
>> SELECT id, ARRAY_AGG (nazwa || '-' || email) AS emp FROM Employe GROUP BY id ORDER BY id;
Użycie ARRAY_AGG w wielu kolumnach bez klauzuli ORDER BY:
Możesz również wypróbować metodę ARRAY_AGG na dowolnej tabeli bez użycia klauzuli ORDER BY i GROUP BY. Załóżmy, że nowo utworzony „aktor” tabeli w starym „teście” bazy danych ma trzy kolumny; „id”, „fname” i „lname”. Tabela zawiera dane o imionach i nazwiskach aktorów wraz z ich identyfikatorami.
>> WYBIERZ * OD aktora;
Połącz więc dwie kolumny „fname” i „lname” na liście tablicy, używając spacji między nimi, tak samo jak w dwóch ostatnich przykładach. Nie usunęliśmy wyraźnie kolumny „id” i używaliśmy funkcji ARRAY_AGG w zapytaniu SELECT. Otrzymana kolumna połączonej tablicy będzie prezentowana jako „aktory”. Wypróbuj poniższe zapytanie w powłoce poleceń i spójrz na wynikową tablicę. Pobraliśmy pojedynczą tablicę z przedstawioną wartością skonkatenowaną nazwa-e-mail, oddzieloną przecinkiem od wyniku.
Wniosek:
Wreszcie prawie skończyłeś wykonywanie większości przykładów wymaganych do zrozumienia metody agregującej ARRAY_AGG. Wypróbuj więcej z nich na swoim końcu, aby uzyskać lepsze zrozumienie i wiedzę.