Postgresql grupa pēc

Postgresql Grupa Pec



Postgresql grupa pēc klauzulas ir līdzeklis, ko izmanto, lai apvienotu/apvienotu tās tabulas rindas, kurās ir vienādi dati. Šo klauzulu galvenokārt izmanto, lai noņemtu dublētus datus un saglabātu vienlaicīgumu. Ikreiz, kad mēs vēlamies aprēķināt summu vai jebkuru citu apkopojumu, piemēram, AVG utt., šī grupa pēc klauzulas vienmēr tiek izmantota, jo PostgreSQL tiek izmantotas daudzas klauzulas. Bet starp katru klauzulu pastāv hierarhija.

NO > KUR > 'GRUPĒT PĒC' > IZVĒLĒTIES > ATŠĶIRT > PASŪTĪT PĒC > IEROBEŽOTS

PostgreSQL darbība ir saistīta ar “kur” un “Having” klauzulu.







Sintakse



ATLASĪT kolonnu

NO manekena galda

KUR [nosacījumi]

GROUP BY pirmā kolonna, otrā kolonna...

KĀRTĪBA PĒC pirmās kolonnas, otrās kolonnas.. ;

1. piemērs



Lai saprastu grupas pēc funkcijas jēdzienu, mēs izmantojam piemēru. Pasažieru tabulā var redzēt, ka uzvārdi dažiem cilvēkiem ir vienādi. Katrs nosaukums, kas ir līdzīgs citam, veido grupu, un to maksājums tiek pievienots kopā katram vārdam. Tas ir sīkāk aprakstīts zemāk esošajā piemērā.





>> izvēlieties lname, SUM (maksājums) no pasažiera GROUP BY lname;

Pasažiera uzvārds tiek izvēlēts, izmantojot iebūvēto funkciju “SUM”, kas aizņem kolonnu “maksājums”. Un pievienojiet maksājumu tiem cilvēkiem, kuriem ir tāds pats vārds. Piemēram, tiek pievienota “Javed” un “saad” alga. Savukārt “Malik” un “Shams” tas tiek minēts atsevišķi.



Līdzīgi apsveriet galdu 'slimnīca'. Mēs vēlamies pilsētu sagrupēt pēc vecuma. Šajā piemērā viena pilsēta kolonnā pastāv vairāk nekā vienu reizi. Katra pilsēta ir sagrupēta ar vienu un to pašu pilsētas nosaukumu. Katras pilsētas grupas vecumi tiek pievienoti un veido vienu rindu.

Slimnīca:

>> izvēlieties pilsētu, SUM (vecumu) no slimnīcas GROUP BY pilsētas;

2. piemērs

Alternatīvi, ja atlasīsim uzvārdu ar ID no tabulas pasažiera, rezultāts būs cita tabula. Tā kā, sagrupējot abas kolonnas kopā, tiks parādīts katra pasažiera vārds, jo katra pasažiera ID, pat ja ir kopīgs uzvārds, ir atšķirīgs. Summa tiek aprēķināta atsevišķā ailē, bet katra pasažiera maksājums ir minēts viņa vārda priekšā, jo šeit netiek veikta lname grupēšana.

Šis ir piemērs grupai pēc klauzulas ar vairākām kolonnām. Tā kā, ja grupēšanai ir atlasītas vairākas kolonnas, iegūtā vērtība tiek mainīta, salīdzinot ar grupu, izmantojot vienu tabulu.

>> izvēlieties id, lname, SUM (maksājumu) no pasažiera GROUP BY id, lname;

No izvades jūs pamanīsit vienu lietu, ka, pirmkārt, tiek parādīti visi tie lname, kas ir neparasti, un tad tie, kas ir vienādi, tiek minēti tabulā.

3. piemērs

Šajā piemērā ir pievienošanās nosacījums un grupa pēc klauzulas. Tā kā tiek lietots “pievienoties”, tas nozīmē, ka šeit esam izmantojuši divas tabulas. Viens ir “prece”, bet otrs ir “pasūtījumi”.

Vienumi:

Pasūtījumi:

Mēs esam izmantojuši savienošanas metodi (izmanto, lai savienotu divas virknes), lai savienotu tabulas “vienumi” divu kolonnu vērtības ar “”, un nosauktu kolonnu kopā kā “apraksts”. Tas nav obligāti; jūs varat tos ņemt atsevišķi. Šajā vaicājumā atslēgvārds “IZMANTOT” identificē konkrēto kolonnu no citas tabulas. Preču tabulas adrese tiek saskaņota ar tabulas “pasūtījumiem” adreses kolonnu. Tas tiek darīts, savienojot divas tabulas. Tāpat kā iepriekšējos piemēros, abas kolonnas tiks atlasītas, izmantojot klauzulu GROUP BY.

>> izvēlieties vārdu || ‘,’ || kategorija kā Apraksts, adrese no vienumiem iekšējais savienot Pasūtījumi IZMANTOJOT (adrese) GROUP BY adrese, Apraksts;

Var novērot, ka tiks atlasītas 5 rindas, kurās preču adreses sakrīt ar Pasūtījumu adresēm. Pēc tam kolonnā Apraksts tiks izveidota atbilstība adreses kolonnai.

Līdzīgi ir vēl viens piemērs savienošanai ar vecuma faktoru divās tabulās. Viens ir “pasažieris”, bet otrs ir “darbinieks”. Savienojums ir starp vārdu un uzvārdu. Abi šie nosaukumi ir atdalīti ar atstarpi starp diviem nosaukumiem. Šeit esam paņēmuši daļu no strādnieku galda.

Strādnieks:

Vaicājums darbosies tā, lai vecuma kolonnā tiktu parādīts punkts, kurā darbinieka fvārds tiek saskaņots ar pasažieri, pasažiera vecums.

>> izvēlieties fname || ‘’ || pasažieris.lvārds kā pilns_vārds, pasažieris.vecums no pasažiera IEKŠĒJS pievienoties darbiniekam IZMANTOJOT (fname) GROUP BY pilns_vārds, pasažieris.vecums ORDER BY pasažieris.vecums;

Tiek izveidota viena rinda. Pilns_nosaukums tiek izveidots, savienojot divas kolonnas ar atstarpi, un tiek atlasīta adrese, kur pasažiera fname sakrīt ar darbinieka fname.

4. piemērs

Šajā piemērā ir apskatīta funkcijas count () izmantošana, lai uzskaitītu tabulas “preces” ID. Šī atkal ir grupēta pēc tabulas ID.

>> Izvēlieties id, COUNT (id) NO vienumiem GROUP BY id;

ID kolonnas rindas ir sadalītas grupās. Katra grupa tiek ieskaitīta kolonnā, cik reizes tā parādās kolonnā. Iegūtajā tabulā tiek izveidota jauna kolonna ar nosaukumu “count”, un šeit katras grupas priekšā tiek ierakstītas skaita vērtības.

Jūsu pgAdmin

Tagad mēs esam izmantojuši dažus piemērus PostgreSQL informācijas paneļa pusē. Šie piemēri savā ziņā atšķiras, jo tie veido starpsummas rindu no sākotnējās kolonnas, kad kāds no vienumiem atšķiras no citiem, tāpēc vērtība tiek atgriezta kā NULL.

Apsveriet pirmo piemēru; šeit mēs esam izveidojuši kolonnas nosaukumu “ALL”, kas apvieno divas kolonnas. Adrese un kategorija. Slejā “ALL” tiek uzskaitītas abu kolonnu vērtības kopā. Adreses kolonna ir grupēta kā “pievienot”, bet kategorijas kolonna ir atsevišķi grupēta kā “kaķis”. Tā kā abu izmantoto tabulu kolonnu nosaukumus var saskaņot. Tātad katrai attiecīgās tabulas kolonnai piekļūst konkrēts objekts.

Komandai piemērotais nosacījums ir atkarīgs no ID un pasūtījuma numura. Ja abi šie ID un pasūtījuma numuri ir vienādi, dati tiek ielādēti. Līdzīgi nosaukumam tiek pievienots arī papildu nosacījums.

>> IZVĒLĒTIES o.adresi, kategoriju, skaitu (*) KĀ “VISI”, GRUPĒŠANA(o.adrese) AS “pievienot” , GRUPĒŠANA (kategorija ) KĀ “kaķis” NO vienumiem I, pasūtījumi o kur i.pasūtījuma_nr = o. order_id UN i.address= 'Lahore' GROUP BY CUBE (o.address, category) ORDER BY 1, 2;

Lahoras pilsētai ir atlasīta viena kategorija. Ir 4 iespējas. Dažreiz rotaļlieta ir klāt, bet ne adrese. Un otrādi. Bet pastāv laiks, kad ir gan kategorija, gan adrese.

Tagad, ja mainām nosaukuma nosacījumu no tabulas un pārslēdzam tabulu ar citu. “Items.address” tiek aizstāts ar “order.address”, tad rezultāts ir atšķirīgs.

Secinājums

Klauzula “Postgresql group by” tiek izmantota, lai kolektīvajiem datiem piemērotu jebkuru apkopotu operatoru. Šajā rakstā tiek izmantota grupēšana pēc klauzulas ar skaitīšanas funkciju, savienojumiem un vairāku kolonnu atlase un grupēšana. Esmu pārliecināts, ka šī apmācība būs labākais veids, kā lasītājiem saprast.