В этой статье будет обсуждаться концепция наборов группировок в 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», в которой есть указание, как мы хотим, чтобы столбцы были скомпилированы, а также в этом же выражении определяется порядок вывода.
Группировка наборов в PostgreSQL
Поскольку мы уже знакомы с синтаксисом группирующих наборов, мы можем рассмотреть несколько примеров, чтобы получить представление о реализации этой концепции в PostgreSQL. Мы можем выполнить группировку с помощью:
- Две колонки таблицы
- Три столбца таблицы
- Заказ по команде
Группировка двух столбцов таблицы
Этот пример будет относиться к более простому группирующему набору, состоящему только из двух столбцов. Сначала мы создадим таблицу с именем Records с атрибутами, такими как номер рулона, название курса и оценки, и с помощью данного кода в следующем фрагменте:
После создания таблицы мы вставим некоторые значения данных в строки разных столбцов, которые мы скомпилируем в дальнейшей команде группировки наборов:
Теперь мы напишем следующие команды, которые помогут в группировке наборов в SQL. Табельный номер студента будет сгруппирован по сумме всех оценок по всем предметам:
Когда мы выполним предыдущий код, мы получим следующий вывод:
Как следует из вывода, все строки сгруппированы по сумме оценок всех курсов. Сумма всех оценок показана против одного и того же номера рулона. Мы можем выполнить эту функцию даже с более чем одним номером списка, так как она будет группировать одинаковый номер списка оценок учащегося во втором столбце против заданного номера списка.
Группировка трех столбцов таблицы
В этом примере мы создадим таблицу в нашей базе данных из 4 разных столбцов и используем концепцию набора группировок для таблицы. Во-первых, нам нужно будет выполнить следующий код для создания таблицы.
Затем мы вставим набор значений для двух разных студентов для нескольких курсов, количество часов, необходимых для курса, а затем оценки этого курса.
После выполнения и успешного добавления предыдущих данных мы перейдем к группировке этих данных, касающихся номера списка студента и названия курса. Для этого мы напишем и выполним код в следующем фрагменте:
Вывод предыдущего кода показан на следующем изображении:
Как видите, мы упростили сложную таблицу в упрощенную и желаемую, сгруппировав ее по номерам рулонов и названиям курсов и добавив отметки в случае повторения. Это произошло в перечне под номером «205», чьи математические оценки были добавлены дважды, поскольку они повторялись.
Мы также можем сгруппировать предыдущие столбцы только по названию курса и получить сумму оценок по каждому курсу. Для этого мы напишем следующий запрос, а затем выполним его:
В этом запросе мы сгруппировали только столбец «Название курса», а столбец «оценки» сгруппировали по агрегатной функции «СУММ». После выполнения этого запроса вывод будет таким:
Результат показывает более точный обзор таблицы, и это указывает на тот факт, что концепция наборов группировки дает нам очень упрощенную версию таблицы, чтобы помочь нам в нашем анализе.
Группировка наборов с помощью команды «ORDER BY»
Мы можем составить наборы столбцов и получить желаемую упрощенную версию таблицы, но иногда она все равно кажется дезориентированной. Таким образом, мы можем еще больше упростить это, используя команду «ORDER BY», которая установит приоритет атрибута в соответствии с нашей спецификацией. После команды «GROUP BY» эта команда будет выполнена. Чтобы лучше понять команду «ORDER BY» с наборами группировки, мы будем использовать предыдущий пример для ее применения. Поскольку мы успешно сгруппировали столбцы в таблице в последнем примере, мы упорядочим их по названию курса и атрибуту «Отметки».
В этом запросе мы расположили выходные данные в алфавитном порядке названий курсов, как показано ниже:
Мы также можем упорядочить вывод в порядке убывания меток, написав этот запрос:
Заключение
В этом руководстве мы узнали о концепции группировки наборов в SQL. В этой статье также обсуждалось преимущество использования команды «GROUP BY» перед командой «UNION ALL». После этого мы также реализовали эту концепцию группирования наборов в среде PostgreSQL, что позволило нам лучше узнать эту важную концепцию языка структурированных запросов. Наконец, мы рассмотрели различные способы реализации этой концепции, изменив некоторые факторы и даже расширив наборы данных для мониторинга эффективности вывода. Мы надеемся, что вы нашли эту статью полезной. Ознакомьтесь с другими статьями Linux Hint, чтобы получить дополнительные советы и информацию.