Поворот с / без Tablefunc

Tablefunc Изучение

Сводная таблица — это мощный инструмент для оценки, компиляции и анализа данных, чтобы еще проще находить закономерности и тенденции. Сводные таблицы можно использовать для агрегирования, сортировки, упорядочивания, переупорядочивания, группировки, суммирования или усреднения данных в наборе данных, чтобы действительно понять ассоциации и зависимости данных. Использование сводной таблицы в качестве иллюстрации — самый простой способ продемонстрировать, как работает этот метод. PostgreSQL 8.3 был запущен несколько лет назад, и была добавлена ​​новая версия под названием tablefunc. Tablefunc- это компонент, содержащий несколько методов, создающих таблицы (то есть несколько строк). Эта модификация обладает очень крутым набором функций. Среди них метод кросс-таблицы, который будет использоваться для создания сводных таблиц. Метод кросс-таблицы принимает текстовый аргумент: команду SQL, которая возвращает необработанные данные в первом макете и возвращает таблицу в последующем макете.

Пример сводной таблицы без TableFunc

Чтобы начать работу над сводной таблицей PostgreSQL с модулем tablefunc, вы должны попытаться создать сводную таблицу без него. Итак, давайте откроем оболочку командной строки PostgreSQL и предоставим значения параметров для требуемого сервера, базы данных, номера порта, имени пользователя и пароля. Оставьте эти параметры пустыми, если вы хотите использовать параметры, выбранные по умолчанию.

Оставьте эти параметры пустыми, если вы хотите использовать параметры

Мы создадим новую таблицу с именем Test в базе данных test с некоторыми полями, как показано ниже.

>> CREATE TABLE Test(Id int, name varchar(20), sal int, job varchar(20));

Мы создадим новую таблицу с именем

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

>> INSERT INTO Test (Id, name, sal, job) VALUES (11, ‘Aqsa’, 45000, ‘Writer’), (11, ‘Aqsa’, 48000, ‘Officer’), (11, ‘Aqsa’, 50000, ‘Doctor’), (12, ‘Raza’, 40000, ‘Officer’), (11, ‘Raza’, 60000, ‘Doctor’), (12, ‘Raza’, 67000, ‘Officer’), (13, ‘Saeed’, 85000, ‘Writer’), (13, ‘Saeed’, 69000, ‘Officer’), (13, ‘Saeed’, 90000, ‘Doctor’);

После создания таблицы пора вставить некоторые значения в таблицу

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

>> SELECT * FROM input;

Вы можете видеть, что соответствующие данные были успешно вставлены

Давайте создадим сводную таблицу, которая суммирует запись таблицы «Тест», используя запрос ниже. Команда объединяет одни и те же значения столбцов «Id» и «name» в одну строку, принимая сумму значений столбца «salary» для одних и тех же данных в соответствии с «Id» и «name». Он также показывает, сколько раз одно значение встречалось в конкретном наборе значений.

>> SELECT Id, name, sum ( sal ) sal, sum ( ( job = ‘Doctor’ ) :: int ) Doctor, sum ( ( job = ‘Writer’ ) :: int ) Writer, sum ( ( job = ‘Officer ‘ ) :: int ) «Офицер» ИЗ ТЕСТОВОЙ ГРУППЫ ПО Id, имени;

Давайте создадим сводную таблицу, которая суммирует запись таблицы

Пример сводной таблицы с TableFunc

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

>> CREATE TABLE IF NOT EXISTS Makeup(make_Id int PRIMARY KEY, p_name VARCHAR(100) NOT NULL);

Мы начнем с объяснения нашей основной идеи с реалистичной точки зрения

После создания таблицы «Макияж» добавим в нее несколько записей. Мы будем выполнять указанный ниже запрос в оболочке, чтобы добавить 10 записей в эту таблицу.

После создания таблицы «Макияж» добавим в нее несколько записей

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

>> CREATE TABLE IF NOT EXISTS users(user_id int PRIMARY KEY, u_name varchar(100) NOT NULL);

Нам нужно создать еще одну таблицу с именем «пользователи»

Мы вставили 20 записей для таблицы «пользователи», как показано на изображении ниже.

Мы вставили 20 записей для таблицы «пользователи»

У нас есть еще одна таблица, «Makeup_user», в которой будут храниться взаимные записи таблицы «Макияж» и «Пользователи». В нем есть еще одно поле «цена», которое позволит сэкономить на цене продукта. Таблица была создана с использованием указанного ниже запроса.

>> CREATE TABLE IF NOT EXISTS makeup_user( ID int PRIMARY KEY, Mid int NOT NULL REFERENCES Makeup(make_Id), Uid  int NOT NULL REFERENCES users(user_id), price decimal(18,2));

У нас есть еще одна таблица

Мы вставили в эту таблицу всего 56 записей, как показано на рисунке.

Читайте также:  Как записывать аудио с помощью MediaStream API?

Мы вставили в эту таблицу всего

Давайте создадим представление, чтобы использовать его для создания сводной таблицы. В этом представлении используется INNER Join для сопоставления значений столбцов первичного ключа всех трех таблиц и извлечения «name», «product_name» и «cost» продукта из таблицы «customers».

>> CREATE VIEW v_makeup_users AS SELECT c.u_name, p.p_name, pc.price FROM users c INNER JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Makeup p ON pc.Mid = p.make_Id;

Давайте создадим представление, чтобы использовать его для создания сводной таблицы

Чтобы использовать это, вы должны сначала установить пакет tablefunc для базы данных, которую вы хотите использовать. Этот пакет является встроенным в PostgreSQL 9.1 и более поздним выпуском, выполнив указанную ниже команду. Пакет tablefunc теперь включен для вас.

>> CREATE EXTENSION IF NOT EXISTS tablefunc;

Чтобы использовать это, вы должны сначала установить пакет tablefunc для базы данных

После создания расширения пришло время использовать функцию Crosstab () для создания сводной таблицы. Поэтому для этого мы будем использовать следующий запрос в оболочке командной строки. Этот запрос сначала извлекает запись из вновь созданного «Представления». Эти записи будут упорядочены и сгруппированы в порядке возрастания столбцов «u_name» и «p_name». Мы указали их названия для макияжа для каждого покупателя, которого они купили, а также общую стоимость приобретенных продуктов в таблице. Мы применили оператор UNION ALL к столбцу «p_name», чтобы суммировать все продукты, приобретенные одним клиентом отдельно. Это суммирует все затраты на продукты, приобретенные пользователем, в одно значение.

После создания расширения пришло время использовать функцию Crosstab

Наша сводная таблица готова и отображается на изображении. Вы можете ясно видеть, что некоторые поля столбцов пусты под каждым p_name, потому что они не купили этот конкретный продукт.

Наша сводная таблица готова и отображается на изображении

Заключение

Теперь мы блестяще научились создавать сводную таблицу для суммирования результатов таблиц с использованием пакета Tablefunc и без него.

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