Группа Postgresql

Gruppa Postgresql



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

ОТ > ГДЕ > «ГРУППИРОВАТЬ ПО» > ИМЕТЬ > ВЫБРАТЬ > ОТДЕЛЬНЫЕ > ЗАКАЗАТЬ ПО > ПРЕДЕЛ

Работа PostgreSQL заключается в «где» и предложении «Иметь».







Синтаксис



ВЫБЕРИТЕ столбец

ОТ думы

ГДЕ [условия]

СГРУППИРОВАТЬ по первому столбцу, второму столбцу..

ORDER BY firstcolumn, secondcolumn.. ;

Пример 1



Чтобы понять концепцию группировки по функциям, мы используем здесь пример. В таблице пассажиров видно, что у некоторых людей фамилии совпадают. Каждое имя, похожее на другое, образует группу, и их оплата суммируется с каждым таким же именем. Это подробно описано в приведенном ниже примере.





>> выбрать имя, СУММУ (платеж) от пассажира СГРУППИРОВАТЬ ПО имени;

Фамилия пассажира выбирается с помощью встроенной функции «СУММ», которая берет столбец «оплата». И добавить оплату для тех людей, которые имеют то же имя. Например, прибавляется оклад «джаведа» и «саада». Тогда как для «Малик» и «Шамс» это упоминается отдельно.



Аналогично рассмотрим таблицу «больница». Мы хотим сгруппировать города по возрасту. В этом примере один город встречается в столбце более одного раза. Каждый город сгруппирован с одинаковым названием города. Возраст каждой группы города суммируется и образует один ряд.

Больница:

>> выберите город, СУММУ (возраст) из больницы СГРУППИРОВАТЬ ПО городам;

Пример 2

В качестве альтернативы, если мы выберем фамилию с идентификатором из таблицы пассажира, результатом будет другая таблица. Потому что, когда мы сгруппируем оба столбца вместе, будет отображаться имя каждого пассажира, потому что идентификатор для каждого пассажира, даже с общей фамилией, отличается. Сумма рассчитывается в отдельной колонке, но платеж каждого пассажира указывается перед его именем, потому что группировка по имени здесь не производится.

Это пример предложения group by с несколькими столбцами. Потому что при выборе нескольких столбцов для группировки результирующее значение изменяется по сравнению с группой по одной таблице.

>> выберите id, lname, SUM (платеж) от пассажира GROUP BY id, lname;

Из вывода вы заметите одну вещь, что сначала отображаются все те lname, которые являются необычными, а затем те, которые совпадают, упоминаются в таблице.

Пример 3

В этом примере есть условие соединения и предложение group by. Поскольку используется «объединение», это означает, что мы использовали здесь две таблицы. Один — «товар», а другой — «заказы».

Предметы:

Заказы:

Мы использовали метод конкатенации (используемый для соединения двух строк), чтобы соединить значения двух столбцов таблицы «items» с помощью «, и назвать столбец коллективно как «description». Это необязательно; вы можете взять их отдельно. В этом запросе ключевое слово «ИСПОЛЬЗОВАНИЕ» идентифицирует конкретный столбец из другой таблицы. Адрес из таблицы items сопоставляется с адресной колонкой таблицы «orders». Это делается путем объединения двух таблиц. Как и в предыдущих примерах, оба столбца будут выбраны предложением GROUP BY.

>> выберите имя || ',' || категория как Описание, адрес из пунктов внутреннего соединения Заказы ИСПОЛЬЗОВАНИЕ (адрес) ГРУППА ПО адрес, Описание;

Вы можете заметить, что будут выбраны 5 строк с адресами товаров, совпадающими с адресами заказов. И тогда в столбце Описание будет сформировано соответствие столбцу адреса.

Точно так же есть еще один пример конкатенации с фактором возраста в двух таблицах. Один «пассажирский», а другой «рабочий». Конкатенация между именем и фамилией. Оба эти имени разделены пробелом между двумя именами. Здесь мы взяли часть рабочего стола.

Рабочий:

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

>> выберите имя || ‘ ‘ || пассажир.lname как полное_имя, пассажир.возраст от пассажира ВНУТРЕННЯЯ присоединиться к работнику ИСПОЛЬЗОВАНИЕ (fname) ГРУППИРОВАТЬ ПО полному_имени, пассажир.возраст ПОРЯДОК ПО пассажир.возраст;

Формируется один ряд. Полное_имя создается путем соединения двух столбцов с пробелом, и выбирается адрес, где имя пассажира совпадает с именем работника.

Пример 4

В этом примере рассматривается использование функции count() для подсчета идентификаторов таблицы «items». Это снова группировка по идентификатору таблицы.

>> Выберите id, COUNT (id) FROM элементов GROUP BY id;

Строки в столбце id разбиты на группы. Каждая группа подсчитывается в столбце, сколько раз она появляется в столбце. В результирующей таблице создается новый столбец с именем «счетчик», и значения счетчика записываются сюда перед каждой группой.

Ваш pgAdmin

Теперь мы применили несколько примеров на стороне приборной панели PostgreSQL. Эти примеры в некотором роде отличаются, потому что они формируют строку промежуточного итога из исходного столбца, когда любой из элементов отличается от других, поэтому значение возвращается как NULL.

Рассмотрим первый пример; здесь мы создали столбец с именем «ВСЕ», который объединил два столбца. Адрес и категория. Столбец «ВСЕ» подсчитывает значения в обоих столбцах вместе. Столбец адреса сгруппирован как «добавить», а столбец категории отдельно сгруппирован как «кошка». Поскольку имена столбцов обеих используемых таблиц могут сопоставляться друг с другом. Таким образом, к каждому столбцу соответствующей таблицы обращается определенный объект.

Условие, применяемое к команде, зависит от идентификатора и номера заказа. Если эти идентификаторы и номера заказов совпадают, данные извлекаются. Точно так же добавляется дополнительное условие для имени.

>> ВЫБРАТЬ адрес, категорию, количество (*) КАК «ВСЕ», ГРУППИРОВАТЬ (адрес) КАК «добавить», ГРУППИРОВАТЬ (категория) КАК «кат» ИЗ элементов I, заказы o, где i.order_no = o. order_id AND i.address= 'Лахор' ГРУППИРОВАТЬ ПО КУБУ (o.адрес, категория) ORDER BY 1, 2;

Для города Лахор выбрана одна категория. Есть 4 возможности. Иногда игрушка присутствует, но не адрес. И наоборот. Но существует время, когда присутствуют и категория, и адрес.

Теперь, если мы изменим условие имени из таблицы и переключим таблицу на другую. «Items.address» заменяется на «order.address», тогда результат другой.

Заключение

Предложение «Postgresql group by» используется для применения любого агрегатного оператора к коллективным данным. В этой статье используется предложение group by с функцией подсчета, объединениями, а также выбором и группировкой нескольких столбцов. Я уверен, что этот учебник будет лучшим средством понимания для читателей.