Postgresql групиране по

Postgresql Grupirane Po



Postgresql group by clause е функция, която се използва за обединяване/комбиниране на онези редове в таблицата, които имат едни и същи данни. Тази клауза се използва главно за премахване на дублирани данни и за поддържане на едновременност. Всеки път, когато искаме да изчислим сума или друг агрегат като AVG и т.н., тази група по клауза винаги се използва, тъй като има много клаузи, използвани в PostgreSQL. Но съществува йерархия между всяка клауза.

FROM > WHERE > “GROUP BY” > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

Работата на PostgreSQL се крие в „къде“ и клаузата „Имам“.







Синтаксис



SELECT колона

ОТ dumytable

КЪДЕ [условия]

ГРУПИРАНЕ ПО първа колона, втора колона..

ПОРЪЧАЙТЕ ПО първа колона, втора колона.. ;

Пример 1



За да разберем концепцията за групата по функция, използваме пример тук. В таблицата на пътниците можете да видите, че фамилиите са еднакви за някои хора. Всяко име, което е подобно на друго, образува група и тяхното плащане се добавя колективно срещу всяко едно и също име. Това е разработено в примера по-долу.





>> изберете lname, SUM (плащане) от пътник GROUP BY lname;

Фамилното име на пътника се избира с помощта на вградена функция „SUM“, която приема колоната „плащане“. И добавете плащането за тези хора със същото име. Например, добавя се заплатата на „Javed“ и „saad“. Докато за „Малик“ и „Шамс“ се споменава индивидуално.



По същия начин помислете за таблица „болница“. Искаме да групираме града според възрастта. В този пример един град съществува повече от веднъж в колона. Всеки град е групиран с едно и също име на град. Възрастите на всяка група от града се добавят и образуват един ред.

Болница:

>> изберете град, SUM (възраст) от болница ГРУПИРАНЕ ПО град;

Пример 2

Като алтернатива, ако изберем последното име с id от пътника на таблицата, резултатът ще бъде различна таблица. Тъй като, когато групираме двете колони заедно, ще се покаже името на всеки пътник, тъй като идентификаторът за всеки пътник, дори с общо фамилно име, е различен. Сумата се изчислява в отделна колона, но плащането на всеки пътник се споменава пред името му, тъй като тук не се извършва групиране на името.

Това е пример за групиране по клауза с множество колони. Тъй като, когато са избрани няколко колони за групиране, получената стойност се променя в сравнение с групата от една таблица.

>> изберете id, lname, SUM (плащане) от пътник GROUP BY id, lname;

От изхода ще забележите едно нещо, че първо се показват всички онези lname, които не са често срещани, а след това онези, които са същите, се споменават в таблицата.

Пример 3

Този пример има условие за присъединяване и група по клауза. Тъй като се използва „join“, това означава, че сме използвали две таблици тук. Единият е „артикул“, а другият е „поръчки“.

артикули:

Поръчки:

Използвахме метод на конкатенация (използван за свързване на два низа), за да обединим стойностите на две колони от таблицата „items“ с „,“ и да наименуваме колоната общо като „description“. Не е задължително; можете да ги вземете отделно. В тази заявка ключовата дума „USING“ идентифицира конкретната колона от другата таблица. Адресът от таблицата с артикули се съпоставя с адресната колона на таблицата „поръчки“. Това става чрез създаване на съединение между две таблици. Подобно на предишните примери, и двете колони ще бъдат избрани от клаузата GROUP BY.

>> изберете име || „,“ || категория като Описание, адрес от артикули вътрешно присъединяване Поръчки ИЗПОЛЗВАНЕ (адрес) ГРУПИРАНЕ ПО адрес, Описание;

Можете да забележите, че ще бъдат избрани 5 реда, като адресът на елементите съответства на адреса на поръчките. И тогава колоната Описание ще бъде формирана в съответствие с колоната адрес.

По подобен начин има друг пример за конкатенация с фактора възраст в две таблици. Единият е „пътник“, а другият е „работник“. Конкатенацията е между собственото и фамилното име. И двете имена са разделени чрез интервал между две имена. Тук сме взели част от работната маса.

работник:

Заявката ще работи така, че точката, в която името на работника съвпада с пътника, възрастта на пътника, се показва в колоната за възраст.

>> изберете fname || „ || putnika.lname като пълно_име, .възраст на пътник от ВЪТРЕШЕН пътник присъединяване към работник ИЗПОЛЗВАНЕ (fname) GROUP BY пълно_име, възраст.възраст на пътника ORDER BY putnika.възраст;

Оформя се един ред. Пълното_име се създава чрез свързване на две колони с интервал и адресът се избира там, където fname на пътника съвпада с fname на работника.

Пример 4

Този пример се занимава с използването на функция count () за преброяване на идентификаторите на таблицата „items“. Това отново е групиране по идентификатора на таблицата.

>> Изберете id, COUNT (id) FROM items GROUP BY id;

Редовете в колоната id са разделени на групи. Всяка група се брои в колоната колко пъти се появява в колоната. В получената таблица се създава нова колона с име “count” и стойностите на броя се записват тук пред всяка група.

Вашият pgAdmin

Сега приложихме някои примери от страната на таблото за управление на PostgreSQL. Тези примери са различни по някакъв начин, защото образуват ред с междинна сума от оригиналната колона, когато някой от елементите се различава от другите, така че стойността се връща като NULL.

Помислете за първия пример; тук създадохме име на колона „ВСИЧКИ“, което комбинира две колони. Адрес и категория. Колоната „ВСИЧКИ“ отчита стойностите в двете колони заедно. Колоната за адрес е групирана като „добавяне“, а колоната за категория е отделно групирана като „котка“. Тъй като имената на колоните на двете използвани таблици могат да бъдат съпоставени едно с друго. Така всяка колона на съответната таблица е достъпна от конкретен обект.

Условието, приложено към командата, зависи от идентификатора и номера на поръчката. Когато тези идентификационни номера и номерата на поръчката са еднакви, данните се извличат. По същия начин се добавя допълнително условие за името.

>> ИЗБЕРЕТЕ o.адрес, категория, брой (*) КАТО „ВСИЧКИ“, ГРУПИРАНЕ(o.адрес) КАТО „добавяне“, ГРУПИРАНЕ (категория) КАТО „котка“ ОТ елементи I, поръчки o където i.order_no = o. order_id И i.address= 'Лахор' ГРУПИРАНЕ ПО КУБ (o.address, категория) ПОРЪЧАЙТЕ ПО 1, 2;

За град Лахор е избрана една категория. Има 4 възможности. Понякога играчката присъства, но не и адресът. И обратно. Но има време, в което присъстват и категорията, и адресът.

Сега, ако променим състоянието на името от таблица и сменим таблицата с друга. „Items.address“ се заменя с „order.address“, тогава резултатът е различен.

Заключение

Клаузата „Postgresql group by“ се използва за прилагане на който и да е обобщен оператор към колективните данни. Тази статия използва група по клауза с функция за броене, обединения и избор и групиране на множество колони. Сигурен съм, че този урок ще бъде най-доброто средство за разбиране за читателите.