Postgresql group by

PostgreSQL с использованием данных База данных

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

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

Работа PostgreSQL находится в пределах «where» и «Have».

Синтаксис

SELECT column

FROM dumytable

WHERE [conditions ]

GROUP BY firstcolumn, secondcolumn..

ORDER BY firstcolumn, secondcolumn.. ;

Пример 1

Чтобы понять концепцию группы по функциям

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

>> select lname, SUM (payment) from passenger GROUP BY lname;

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

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

Больница:

Аналогично рассмотрим таблицу «Больница»

>> select city, SUM (age) from hospital GROUP BY city;

В этом примере один город существует более одного раза в столбце

Пример 2

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

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

>> select id, lname, SUM (payment) from passenger GROUP BY id, lname;

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

Читайте также:  Как подсчитать уникальные значения в PostgreSQL?

Пример 3

 

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

Предметы:

В этом примере есть условие соединения и предложение group by

 

Заказы:

Мы использовали метод конкатенации (используемый для соединения двух строк)

Мы использовали метод конкатенации (используемый для соединения двух строк), чтобы объединить значения двух столбцов таблицы «items» с помощью «» и назвать столбец вместе как «описание». Это необязательно; вы можете взять их отдельно. В этом запросе ключевое слово «USING» идентифицирует конкретный столбец из другой таблицы. Адрес из таблицы товаров совпадает со столбцом адреса таблицы «заказы». Это делается путем объединения двух таблиц. Как и в предыдущих примерах, оба столбца будут выбраны предложением GROUP BY.

>> select name || ‘,’ || category as Description, address from items inner join Orders USING (address) GROUP BY address, Description;

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

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

Рабочий:

Точно так же есть еще один пример объединения с

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

>> select fname || ‘ ‘ || passenger.lname as full_name, passenger.age from passenger INNER join worker USING (fname) GROUP BY full_name, passenger.age ORDER BY passenger.age;

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

Пример 4

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

>> Select id, COUNT (id) FROM items GROUP BY id;

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

Читайте также:  Как отключить неактивные соединения в PostgreSQL

Через pgAdmin

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

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

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

>> SELECT o.address, category, count (*) AS “ALL, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FROM items I, orders o where i.order_no = o.order_id AND i.address= ‘Lahore’ GROUP BY CUBE (o.address, category) ORDER BY 1, 2;

Для города Лахор выбрана одна категория

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

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

Заключение

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

Оцените статью
bestprogrammer.ru
Добавить комментарий