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.