PostgreSQL Grouping Sets

установить и настроить PostgreSQL на Ubuntu База данных

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

Группировка наборов в SQL

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

Концепция группировки наборов реализуется командой «ГРУППИРОВАТЬ ПО» и «ГРУППИРОВАТЬ НАБОРЫ». Хотя команда «UNION ALL» в SQL может выполнять ту же задачу, она требует большого количества подзапросов. Он накладывает различные ограничения, что делает его неудобным для разработчика и уступает более удобной и точной с точки зрения точности идее группировки наборов. Команда «UNION ALL» требует точного количества атрибутов с одинаковыми типами данных для каждого столбца, поэтому мы должны писать «NULL» в каждом таком состоянии в нашем коде, что увеличивает количество строк запроса.

В более новых обновлениях этого языка за командой «GROUP BY» следует команда «GROUPING SETS», которая не требует нескольких подзапросов, таких как команда UNION ALL, и группирует набор в упрощенную форму. Для реализации этой концепции нам придется следовать общему синтаксису, который написан ниже:

SELECT
First_Column,
Second_Column,
aggregate_function(Third_Column)
FROM
Name_of_the_table
GROUP BY
GROUPING SETS (
(First_Column, Second_Column),
(First_Column),
(Second_Column),
()
);

Мы использовали несколько команд в предыдущем синтаксисе:

  • Первый — «SELECT», в котором мы выбираем столбцы для вычисления и получения результата, а также агрегатную функцию для вычисления и отображения вывода в последнем столбце. Агрегатная функция — это простой метод агрегирования чисел в каждой строке двух столбцов: SUM, AVG, MIN и MAX.
  • Во-вторых, команда «FROM» указывает имя таблицы в нашей базе данных, которую мы используем для компиляции выходных данных. После этого используется команда «GROUP BY», в которой есть указание, как мы хотим, чтобы столбцы были скомпилированы, а также в этом же выражении определяется порядок вывода.
Читайте также:  Что такое Date_Part в PostgreSQL?

Группировка наборов в PostgreSQL

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

  • Две колонки таблицы
  • Три столбца таблицы
  • Заказ по команде

Группировка двух столбцов таблицы

Этот пример будет относиться к более простому группирующему набору, состоящему только из двух столбцов. Сначала мы создадим таблицу с именем Records с атрибутами, такими как номер рулона, название курса и оценки, и с помощью данного кода в следующем фрагменте:

Этот пример будет относиться к более простому

После создания таблицы мы вставим некоторые значения данных в строки разных столбцов, которые мы скомпилируем в дальнейшей команде группировки наборов:

После создания таблицы мы вставим некоторые значения данных

Теперь мы напишем следующие команды, которые помогут в группировке наборов в SQL. Табельный номер студента будет сгруппирован по сумме всех оценок по всем предметам:

Теперь мы напишем следующие команды, которые помогут в группировке наборов

Когда мы выполним предыдущий код, мы получим следующий вывод:

Когда мы выполним предыдущий код, мы полу

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

Группировка трех столбцов таблицы

В этом примере мы создадим таблицу в нашей базе данных из 4 разных столбцов и используем концепцию набора группировок для таблицы. Во-первых, нам нужно будет выполнить следующий код для создания таблицы.

В этом примере мы создадим таблицу в нашей базе данных из

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

атем мы вставим набор значений для двух разных студент

После выполнения и успешного добавления предыдущих данных мы перейдем к группировке этих данных, касающихся номера списка студента и названия курса. Для этого мы напишем и выполним код в следующем фрагменте:

После выполнения и успешного добавления предыдущих данных

Вывод предыдущего кода показан на следующем изображении:

Вывод предыдущего кода показан на следующ

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

Читайте также:  Удаление последовательности (sequences) в PostgreSQL

Мы также можем сгруппировать предыдущие столбцы только по названию курса и получить сумму оценок по каждому курсу. Для этого мы напишем следующий запрос, а затем выполним его:

Мы также можем сгруппировать предыдущие столбцы

В этом запросе мы сгруппировали только столбец «Название курса», а столбец «оценки» сгруппировали по агрегатной функции «СУММ». После выполнения этого запроса вывод будет таким:

В этом запросе мы сгруппировали только столбец

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

Группировка наборов с помощью команды «ORDER BY»

Мы можем составить наборы столбцов и получить желаемую упрощенную версию таблицы, но иногда она все равно кажется дезориентированной. Таким образом, мы можем еще больше упростить это, используя команду «ORDER BY», которая установит приоритет атрибута в соответствии с нашей спецификацией. После команды «GROUP BY» эта команда будет выполнена. Чтобы лучше понять команду «ORDER BY» с наборами группировки, мы будем использовать предыдущий пример для ее применения. Поскольку мы успешно сгруппировали столбцы в таблице в последнем примере, мы упорядочим их по названию курса и атрибуту «Отметки».

Мы можем составить наборы столбцов и получить желаемую

В этом запросе мы расположили выходные данные в алфавитном порядке названий курсов, как показано ниже:

В этом запросе мы расположили выходные данн

Мы также можем упорядочить вывод в порядке убывания меток, написав этот запрос:

Мы также можем упорядочить вывод в порядке убыва

Заключение

В этом руководстве мы узнали о концепции группировки наборов в SQL. В этой статье также обсуждалось преимущество использования команды «GROUP BY» перед командой «UNION ALL». После этого мы также реализовали эту концепцию группирования наборов в среде PostgreSQL, что позволило нам лучше узнать эту важную концепцию языка структурированных запросов. Наконец, мы рассмотрели различные способы реализации этой концепции, изменив некоторые факторы и даже расширив наборы данных для мониторинга эффективности вывода. Мы надеемся, что вы нашли эту статью полезной. Ознакомьтесь с другими статьями Linux Hint, чтобы получить дополнительные советы и информацию.

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