PostgreSQL

Hoe de PostgreSQL ARRAY_AGG-functie te gebruiken?

Hoe de PostgreSQL ARRAY_AGG-functie te gebruiken?
De aggregatiemethode ARRAY_AGG() is een van de methoden die in PostgreSQL wordt gebruikt, waarbij verschillende invoerwaarden worden gebruikt en deze worden samengevoegd tot een array, inclusief NULL-waarden. Het retourneert een array met elke waarde uit de invoergroep als onderdeel. Om de resultatenset te sorteren via de PostgreSQL ARRAY_AGG-functie, gebruikt u de ORDER BY-zin. U kunt indien nodig ook de WHERE-component gebruiken.

Om de geaggregeerde ARRAY_Agg()-methode te begrijpen, moet u verschillende voorbeelden uitvoeren. Open hiervoor de PostgreSQL-opdrachtregelshell. Als u de andere server wilt inschakelen, doet u dit door de naam op te geven. Laat anders de spatie leeg en druk op de Enter-knop om naar Database te springen. Als u de standaarddatabase wilt gebruiken, e.g., Postgres, laat het dan zoals het is en druk op Enter; schrijf anders de naam van een database, e.g., “test”, zoals weergegeven in de onderstaande afbeelding. Als je een andere poort wilt gebruiken, schrijf deze dan weg, anders laat je hem zoals hij is en tik je op Enter om door te gaan. Het zal je vragen om de gebruikersnaam toe te voegen als je wilt overschakelen naar een andere gebruikersnaam. Voeg desgewenst de gebruikersnaam toe, anders drukt u gewoon op "Enter". Uiteindelijk moet u uw huidige gebruikerswachtwoord opgeven om de opdrachtregel te gebruiken met die specifieke gebruiker, zoals hieronder:. Na succesvolle invoer van alle vereiste informatie, bent u klaar om te gaan.

Gebruik van ARRAY_AGG op één kolom:

Beschouw de tabel "persoon" in de database "test" met drie kolommen; "id", "naam" en "leeftijd". De kolom "id" heeft de id's van alle personen. Terwijl het veld 'naam' de namen van de personen bevat en de kolom 'leeftijd' de leeftijden van alle personen.

>> SELECTEER * VAN persoon;

Afhankelijk van de overheadtabel, moeten we de geaggregeerde ARRAY_AGG-methode toepassen om de lijst met arrays van alle namen van de tabel te retourneren via kolom "naam". Hiermee moet u de functie ARRAY_AGG() in de SELECT-query gebruiken om het resultaat op te halen in de vorm van een array. Probeer de vermelde query in uw opdrachtshell en krijg het resultaat. Zoals u kunt zien, hebben we de onderstaande uitvoerkolom "array_agg" met namen in een array voor dezelfde query.

>> SELECT ARRAY_AGG(naam) FROM persoon;

Gebruik van ARRAY_AGG op meerdere kolommen met ORDER BY-clausule:

Voorbeeld 01:

Als u de functie ARRAY_AGG op meerdere kolommen toepast terwijl u de ORDER BY-component gebruikt, moet u rekening houden met dezelfde tabel "persoon" in de database "test" met drie kolommen; "id", "naam" en "leeftijd". In dit voorbeeld gebruiken we de GROUP BY-component.

>> SELECTEER * VAN persoon;

We hebben het SELECT-queryresultaat samengevoegd in een arraylijst terwijl we de twee kolommen "naam" en "leeftijd" gebruiken. In dit voorbeeld hebben we spatie gebruikt als een speciaal teken dat tot nu toe is gebruikt om beide kolommen samen te voegen. Aan de andere kant hebben we de kolom "id" afzonderlijk opgehaald. Het resultaat van de aaneengeschakelde array wordt tijdens runtime weergegeven in een kolom "persondata". De resultatenset wordt eerst gegroepeerd op de "id" van de persoon en gesorteerd in oplopende volgorde van veld "id". Laten we het onderstaande commando in de shell proberen en zelf de resultaten zien. U kunt zien dat we een aparte array hebben voor elke aaneengeschakelde waarde van naam en leeftijd in de onderstaande afbeelding:.

>> SELECT id, ARRAY_AGG (naam ||"|| leeftijd) als persoonsgegevens FROM persoon GROUP BY id ORDER BY id;



Voorbeeld 02:

Overweeg een nieuw gemaakte tabel "Werknemer" in de database "test" met vijf kolommen; "id", "naam", "salaris", "leeftijd" en "e-mail". De tabel bevat alle gegevens over de 5 werknemers die in een bedrijf werken. In dit voorbeeld gebruiken we het speciale teken '-' om twee velden samen te voegen in plaats van spatie te gebruiken terwijl we de clausules GROUP BY en ORDER BY gebruiken.

>> KIES * VAN Medewerker;

We voegen de gegevens van twee kolommen, "naam" en "e-mail" in een array samen terwijl we '-' ertussen gebruiken. Hetzelfde als voorheen, we extraheren de kolom "id" duidelijk. De aaneengeschakelde kolomresultaten worden tijdens runtime weergegeven als "emp". De uitkomstset wordt eerst samengesteld door de "id" van de persoon en daarna wordt deze georganiseerd in oplopende volgorde van kolom "id". Laten we een zeer vergelijkbare opdracht in de shell proberen met kleine wijzigingen en de gevolgen zien. Uit het onderstaande resultaat hebt u een afzonderlijke array verkregen voor elke naam-e-mail aaneengeschakelde waarde die in de afbeelding wordt weergegeven, terwijl het '-'-teken in elke waarde wordt gebruikt.

>> SELECT id, ARRAY_AGG (naam || '-' || e-mail) AS emp FROM Employee GROUP BY id ORDER BY id;

Gebruik van ARRAY_AGG op meerdere kolommen zonder ORDER BY-clausule:

U kunt de methode ARRAY_AGG ook op elke tabel proberen zonder de clausules ORDER BY en GROUP BY te gebruiken. Neem aan dat een nieuw gemaakte tabel "actor" in uw oude database "test" drie kolommen heeft; "id", "fname" en "lname". De tabel bevat gegevens over de voor- en achternaam van de acteur, samen met hun id's.

>> KIES * VAN acteur;

Dus, voeg de twee kolommen "fname" en "lname" samen in een arraylijst terwijl u ruimte ertussen gebruikt, hetzelfde als in de laatste twee voorbeelden. We hebben de kolom 'id' niet duidelijk verwijderd en hebben de ARRAY_AGG-functie gebruikt in de SELECT-query. De resulterende matrix aaneengeschakelde kolom wordt gepresenteerd als "actors". Probeer de onderstaande query in de opdrachtshell en krijg een glimp van de resulterende array. We hebben een enkele array opgehaald met een aaneengeschakelde waarde van naam en e-mail, gescheiden door een komma van de uitkomst.

Conclusie:

Ten slotte bent u bijna klaar met het uitvoeren van de meeste voorbeelden die nodig zijn om de ARRAY_AGG-aggregatiemethode te begrijpen. Probeer meer van hen aan uw einde voor een beter begrip en kennis.

Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...