PostgreSQL

Поворот с / без функции таблицы

Поворот с / без функции таблицы

Сводная таблица - это мощный инструмент для оценки, компиляции и анализа данных, чтобы еще проще находить закономерности и тенденции. Сводные таблицы можно использовать для агрегирования, сортировки, упорядочивания, перегруппировки, группировки, итогов или усреднения данных в наборе данных, чтобы действительно понять ассоциации и зависимости данных. Использование сводной таблицы в качестве иллюстрации - самый простой способ продемонстрировать, как работает этот метод. 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, «Доктор»), (12, «Раза», 40000, «Офицер»), (11, «Раза», 60000, «Доктор»), (12, «Раза», 67000, «Офицер»), ( 13, «Саид», 85000, «Писатель»), (13, «Саид», 69000, «Офицер»), (13, «Саид», 90000, «Доктор»);

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

>> ВЫБРАТЬ * ИЗ ввода;

Давайте создадим сводную таблицу, которая суммирует запись таблицы «Тест», используя следующий запрос. Команда объединяет одни и те же значения столбца «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, name;

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

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

>> СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ Макет (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

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

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

>> СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ пользователи (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

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

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

>> СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ Make_user (ID int PRIMARY KEY, Mid int NOT NULL ССЫЛКИ Makeup (make_Id), Uid int NOT NULL ССЫЛКИ users (user_id), десятичная цена (18,2));

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

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

>> СОЗДАТЬ ПРОСМОТР v_makeup_users КАК ВЫБРАТЬ c.u_name, p.p_name, pc.цена ОТ пользователей c ВНУТРЕННЕЕ СОЕДИНЕНИЕ Makeup_user pc ON c.user_id = pc.Uid INNER JOIN Makeup p НА ПК.Mid = p.make_Id;

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

>> СОЗДАТЬ РАСШИРЕНИЕ, ЕСЛИ НЕ СУЩЕСТВУЕТ tablefunc;

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

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

Заключение:

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

Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...
Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...