Postgresql-groep door

Postgresql Groep Door



Postgresql group by-clausule is een functie die wordt gebruikt om die rijen in de tabel met dezelfde gegevens te verenigen/combineren. Deze clausule wordt voornamelijk gebruikt om dubbele gegevens te verwijderen en gelijktijdigheid te behouden. Telkens wanneer we de som willen berekenen, of een ander aggregaat zoals AVG, enz., Wordt altijd deze group by-clausule gebruikt, aangezien er veel clausules worden gebruikt in PostgreSQL. Maar er bestaat een hiërarchie tussen elke clausule.

VANUIT > WAAR > “GROEPEREN OP” > HEBBEN > SELECTEREN > DISTINCT > BESTELLEN OP > LIMIET

De werking van PostgreSQL ligt binnen de 'where' en de 'Having' clausule.







Syntaxis



SELECTEER kolom

VAN dumytable

WAAR [voorwaarden]

GROEPEREN OP eerste kolom, tweede kolom..

ORDER PER eerstekolom, tweedekolom.. ;

voorbeeld 1



Om het concept van de groep per functie te begrijpen, gebruiken we hier een voorbeeld. In de passagierstabel zie je dat de achternamen van sommige mensen hetzelfde zijn. Elke naam die op een andere lijkt, vormt een groep en hun betaling wordt collectief opgeteld bij elke naam. In onderstaand voorbeeld wordt dit uitgewerkt.





>> selecteer lname, SUM (betaling) van passagier GROUP BY lname;

De achternaam van de passagier wordt geselecteerd met behulp van een ingebouwde functie ‘SUM’ die de kolom ‘betaling’ aanneemt. En voeg de betaling toe voor die mensen met dezelfde naam. Zo wordt het salaris van “Javed” en “saad” toegevoegd. Terwijl het voor 'Malik' en 'Shams' afzonderlijk wordt vermeld.



Beschouw op dezelfde manier een tafel 'ziekenhuis'. We willen de stad groeperen voor de leeftijd. In dit voorbeeld komt één stad meer dan eens voor in een kolom. Elke stad is gegroepeerd met dezelfde stadsnaam. De leeftijden van elke groep van de stad worden opgeteld en vormen een enkele rij.

Ziekenhuis:

>> selecteer stad, SOM (leeftijd) van ziekenhuis GROEP PER stad;

Voorbeeld 2

Als we de achternaam met de id van de tafelpassagier selecteren, is het resultaat een andere tafel. Omdat wanneer we beide kolommen samen groeperen, de naam van elke passagier wordt weergegeven omdat de ID voor elke passagier, zelfs met een gemeenschappelijke achternaam, anders is. Het bedrag wordt berekend in een aparte kolom, maar de betaling van elke passagier wordt voor zijn naam vermeld omdat de groepering van lname hier niet wordt gedaan.

Dit is een voorbeeld van de group by-clausule met meerdere kolommen. Omdat wanneer meerdere kolommen worden geselecteerd voor groepering, de resulterende waarde wordt gewijzigd in vergelijking met de groep door een enkele tabel.

>> selecteer id, lname, SUM (betaling) van passagier GROUP BY id, lname;

Uit de uitvoer zult u één ding opmerken dat ten eerste al die lname die ongewoon zijn, worden weergegeven, en vervolgens worden degenen die hetzelfde zijn in de tabel vermeld.

Voorbeeld 3

Dit voorbeeld heeft een join-voorwaarde en een group by-clausule. Aangezien 'join' wordt gebruikt, betekent dit dat we hier twee tabellen hebben gebruikt. De ene is 'artikel' en de andere is 'bestellingen'.

Artikelen:

Bestellingen:

We hebben een aaneenschakelingsmethode gebruikt (gebruikt om twee strings samen te voegen) om de waarden van twee kolommen van de tabel 'items' samen te voegen met ',' en de kolom gezamenlijk de naam 'beschrijving' te geven. Het is optioneel; u mag ze apart nemen. In deze zoekopdracht identificeert het trefwoord 'USING' de specifieke kolom uit de andere tabel. Het adres uit de artikelentabel komt overeen met de adreskolom van de tabel 'bestellingen'. Dit wordt gedaan door een join te maken tussen twee tabellen. Net als eerdere voorbeelden worden beide kolommen geselecteerd door de GROUP BY-component.

>> selecteer naam || ‘,’ || categorie als Beschrijving, adres van items inner join Bestellingen GEBRUIKEN (adres) GROUP BY adres, Beschrijving;

U kunt zien dat er 5 rijen worden geselecteerd waarbij het adres van de artikelen overeenkomt met het adres van de bestellingen. En dan wordt de kolom Beschrijving gevormd in overeenstemming met de adreskolom.

Evenzo is er nog een voorbeeld van aaneenschakeling met de factor leeftijd in twee tabellen. De ene is 'passagier' en de andere is 'werknemer'. Aaneenschakeling is tussen de voor- en achternaam. Beide namen worden gescheiden door de spatie tussen twee namen. We hebben hier een deel van de werktafel genomen.

werknemer:

De query werkt zo dat het punt waar de fname van de werknemer overeenkomt met de passagier, de leeftijd van de passagier, wordt weergegeven in de leeftijdskolom.

>> selecteer fnaam || ‘ ‘ || passagier.lname als volledige_naam, passagier.leeftijd van passagier INNER join werknemer GEBRUIKEN (fname) GROUP BY volledige_naam, passagier.leeftijd ORDER BY passagier.leeftijd;

Er wordt één rij gevormd. De volledige_naam wordt gemaakt door twee kolommen met een spatie samen te voegen en het adres wordt geselecteerd waar de fnaam van de passagier overeenkomt met de fnaam van de werknemer.

Voorbeeld 4

Dit voorbeeld behandelt het gebruik van een functie count() om de id's van de tabel 'items' te tellen. Dit is opnieuw gegroepeerd op de id van de tabel.

>> Selecteer id, COUNT (id) VAN items GROUP BY id;

De rijen in de id-kolom zijn opgesplitst in groepen. Elke groep wordt in de kolom geteld hoe vaak deze in de kolom voorkomt. In de resulterende tabel wordt een nieuwe kolom met een 'count' -naam gemaakt en de waarden van de count worden hier vóór elke groep geschreven.

Uw pgAdmin

Nu hebben we enkele voorbeelden toegepast aan de dashboardkant van PostgreSQL. Deze voorbeelden zijn op de een of andere manier anders omdat ze een subtotaalrij vormen van de oorspronkelijke kolom wanneer een van de items verschilt van de andere, dus de waarde wordt geretourneerd als NULL.

Beschouw het eerste voorbeeld; hier hebben we een kolomnaam 'ALL' gemaakt die twee kolommen heeft gecombineerd. Een adres en een categorie. De kolom 'ALL' telt de waarden in beide kolommen samen. De adreskolom is gegroepeerd als 'toevoegen' en de categoriekolom is afzonderlijk gegroepeerd als 'kat'. Omdat kolomnamen van beide gebruikte tabellen aan elkaar kunnen worden gekoppeld. Elke kolom van de respectieve tabel is dus toegankelijk voor een specifiek object.

De voorwaarde die op de opdracht wordt toegepast, is afhankelijk van de id en het bestelnummer. Waar zowel deze id- als bestelnummers hetzelfde zijn, worden de gegevens opgehaald. Op dezelfde manier wordt ook een aanvullende voorwaarde voor de naam toegevoegd.

>> SELECT o.address, category, count (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FROM items I, orders o waar i.order_no = o. order_id AND i.address= 'Lahore' GROEP PER KUBUS (o.adres, categorie) BESTEL PER 1, 2;

Voor de stad Lahore is één categorie geselecteerd. Er zijn 4 mogelijkheden. Soms is het speelgoed wel aanwezig maar niet het adres. En vice versa. Maar er bestaat een tijd waarin zowel de categorie als het adres aanwezig zijn.

Als we nu de voorwaarde van de naam van een tabel wijzigen en de tabel verwisselen met een andere. “Items.address” wordt vervangen door “order.address”, dan is het resultaat anders.

Conclusie

De clausule 'Postgresql group by' wordt gebruikt om een ​​geaggregeerde operator toe te passen op de collectieve gegevens. Dit artikel maakt gebruik van group by-clausule met telfunctie, joins en selectie en groepering van meerdere kolommen. Ik weet zeker dat deze tutorial de beste manier is om de lezers te begrijpen.