Grup Postgresql per

Grup Postgresql Per



Postgresql grup per clàusula és una característica que s'utilitza per unir/combinar aquelles files de la taula que tenen les mateixes dades. Aquesta clàusula s'utilitza principalment per eliminar dades duplicades i mantenir la concurrència. Sempre que volem calcular la suma, o qualsevol altre agregat com AVG, etc., sempre s'utilitza aquest grup per clàusula, ja que hi ha moltes clàusules utilitzades a PostgreSQL. Però hi ha una jerarquia entre cada clàusula.

DES DE > ON > 'GRUPA PER' > TENIR > SELECCIONAR > DISTINCT > ORDENA PER > LÍMIT

El funcionament de PostgreSQL es troba dins de la clàusula 'on' i 'Tenir'.







Sintaxi



SELECCIONA la columna

DE Dumytable

ON [condicions]

AGRUPAR PER primera columna, segona columna..

ORDENA PER primera columna, segona columna.. ;

Exemple 1



Per entendre el concepte de grup per funció, fem servir un exemple aquí. A la taula de passatgers, podeu veure que els cognoms són els mateixos per a algunes persones. Cada nom semblant a un altre forma un grup i el seu pagament s'afegeix col·lectivament a cada mateix nom. Això s'elabora a l'exemple següent.





>> seleccioneu lname, SUM (pagament) del passatger GROUP BY lname;

El cognom del passatger es selecciona amb l'ús d'una funció integrada 'SUMA' que pren la columna 'pagament'. I afegiu el pagament per a aquelles persones que tinguin el mateix nom. Per exemple, s'afegeix el sou de 'Javed' i 'saad'. Mentre que per a 'Malik' i 'Shams', s'esmenta individualment.



De la mateixa manera, considereu una taula 'hospital'. Volem agrupar la ciutat per l'edat. En aquest exemple, una ciutat existeix més d'una vegada en una columna. Cada ciutat s'agrupa amb el mateix nom de ciutat. Les edats de cada grup de la ciutat s'afegeixen i formen una sola fila.

Hospital:

>> seleccionar ciutat, SUMA (edat) de l'hospital GRUP PER ciutat;

Exemple 2

Alternativament, si seleccionem el cognom amb l'identificador del passatger de la taula, el resultat serà una taula diferent. Perquè quan agrupem les dues columnes, mostrarà el nom de cada passatger perquè l'identificador de cada passatger, fins i tot amb un cognom comú, és diferent. La suma es calcula en una columna separada, però el pagament de cada passatger s'esmenta davant del seu nom perquè l'agrupació de lname no es fa aquí.

Aquest és un exemple de grup per clàusula amb diverses columnes. Perquè quan es seleccionen diverses columnes per agrupar, el valor resultant es canvia en comparació amb el grup mitjançant una única taula.

>> seleccioneu id, lname, SUM (pagament) del passatger GROUP BY id, lname;

A la sortida, notareu una cosa que, en primer lloc, es mostren tots aquells lname que no són comuns, i després els que són iguals s'esmenten a la taula.

Exemple 3

Aquest exemple té una condició d'unió i una clàusula grup per. Com que s'utilitza 'unir', vol dir que aquí hem utilitzat dues taules. Un és 'article' i l'altre és 'comandes'.

Elements:

Comandes:

Hem utilitzat un mètode de concatenació (utilitzat per unir dues cadenes) per unir els valors de dues columnes de la taula 'elements' amb '', i anomenar la columna col·lectivament com a 'descripció'. És opcional; els pots portar per separat. En aquesta consulta, la paraula clau 'UTILITZAR' identifica la columna específica de l'altra taula. L'adreça de la taula d'articles coincideix amb la columna d'adreces de la taula 'comandes'. Això es fa fent una unió entre dues taules. Com els exemples anteriors, ambdues columnes seran seleccionades per la clàusula GROUP BY.

>> selecciona el nom || ‘,’ || categoria com a Descripció, adreça dels elements d'unió interna Comandes USING (adreça) GROUP BY adreça, Descripció;

Podeu observar que es seleccionaran 5 files amb l'adreça dels articles coincidint amb l'adreça de les Comandes. A continuació, la columna Descripció es formarà en correspondència amb la columna d'adreça.

De la mateixa manera, hi ha un altre exemple de concatenació amb el factor d'edat en dues taules. Un és 'passatger' i l'altre 'treballador'. La concatenació està entre el nom i el cognom. Tots dos noms estan separats per l'espai entre dos noms. Hem agafat una part de la taula de treball aquí.

Treballador:

La consulta funcionarà de manera que el punt on el fname del treballador coincideixi amb el passatger, l'edat del passatger, es mostri a la columna d'edat.

>> seleccioneu fname || ‘‘ || passenger.lname com a nom_complet, passatger.edat del passatger INNER join worker USING (fname) GROUP BY nom_complet, passatger.edat ORDER BY passatger.edat;

Es forma una fila. El nom_complet es crea unint dues columnes amb espai i es selecciona l'adreça on el fname del passatger coincideix amb el fname del treballador.

Exemple 4

Aquest exemple tracta de l'ús d'una funció count () per comptar els identificadors de la taula 'elements'. Això torna a ser agrupat per l'identificador de la taula.

>> Seleccioneu id, COUNT (id) DES d'elements GROUP BY id;

Les files de la columna id es divideixen en grups. Cada grup es compta a la columna quantes vegades apareix a la columna. A la taula resultant, es crea una nova columna amb un nom de 'compte' i els valors del recompte s'escriuen aquí davant de cada grup.

El vostre pgAdmin

Ara hem aplicat alguns exemples al tauler de control de PostgreSQL. Aquests exemples són diferents d'alguna manera perquè formen una fila de subtotal de la columna original quan qualsevol dels elements és diferent dels altres, de manera que el valor es retorna com a NULL.

Considereu el primer exemple; aquí, hem creat un nom de columna 'TOT' que ha combinat dues columnes. Una adreça i una categoria. La columna 'TOT' compta els valors de les dues columnes col·lectivament. La columna d'adreça s'agrupa com a 'afegeix' i la columna de categoria s'agrupa per separat com a 'gat'. Com que els noms de columnes d'ambdues taules utilitzades poden coincidir entre si. Així, cada columna de la taula respectiva s'accedeix a un objecte específic.

La condició aplicada a l'ordre depèn de l'identificador i del número de comanda. Quan aquests números d'identificació i de comanda són els mateixos, s'obtenen les dades. De la mateixa manera, també s'afegeix una condició addicional per al nom.

>> SELECT o.address, categoria, count (*) COM “TOTS”, GROUPING(o.address) COM “add” , GROUPING (categoria ) COM “cat” FROM articles I, comandes o on i.order_no = o. order_id AND i.address= 'Lahore' GROUP PER CUBE (o.address, categoria) ORDER BY 1, 2;

Per a la ciutat de Lahore, se selecciona una categoria. Hi ha 4 possibilitats. De vegades, la joguina és present però no l'adreça. I viceversa. Però hi ha un moment en què tant la categoria com l'adreça estan presents.

Ara, si canviem la condició del nom d'una taula i canviem la taula per una altra. 'Items.address' es substitueix per 'order.address', aleshores el resultat és diferent.

Conclusió

La clàusula 'Postgresql group by' s'utilitza per aplicar qualsevol operador agregat a les dades col·lectives. Aquest article utilitza grup per clàusula amb funció de recompte, unions i selecció i agrupació de diverses columnes. Estic segur que aquest tutorial serà el millor mitjà de comprensió per als lectors.