PostgreSQL

Оси с / без Tablefunc

Оси с / без Tablefunc

Сводната таблица е мощен инструмент за оценка, компилиране и преглед на данни, за да се намерят модели и тенденции още по-лесно. Обобщените таблици могат да се използват за обобщаване, сортиране, подреждане, пренареждане, групиране, общо или осредняване на данни в набор от данни, за да се разберат истински асоциации и зависимости. Използването на обобщена таблица като илюстрация е най-лесният начин да се демонстрира как работи този метод. PostgreSQL 8.3 стартира преди няколко години и се появи нова версия, наречена 'tablefunc' беше добавен. Tablefunc е компонент, който съдържа няколко метода, които дават таблици (т.е. множество редове). Тази модификация се предлага с много страхотна гама от функции. Методът на кръстосани таблици, който ще се използва за създаване на обобщени таблици, е сред тях. Методът crosstab приема текстов аргумент: SQL команда, която връща сурови данни в първото оформление и връща таблица в следващото оформление.

Примерна обобщена таблица без TableFunc:

За да започнете работа по PostgreSQL пивотиране с модула 'tablefunc', трябва да опитате да направите обобщена таблица без него. Така че нека отворим черупката на командния ред на PostgreSQL и предоставим стойностите на параметрите за необходимия сървър, база данни, номер на порт, потребителско име и парола. Оставете тези параметри празни, ако искате да използвате избраните по подразбиране параметри.

Ще създадем нова таблица с име „Тест“ в базата данни „тест“ с някои полета в нея, както е показано по-долу.

>> СЪЗДАВАНЕ НА ТАБЛИЦА Тест (Id int, име 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“);

Можете да видите, че съответните данни са вмъкнати успешно. Можете да видите, че тази таблица има повече от 1 от същите стойности за идентификатор, име и работа.

>> ИЗБЕРЕТЕ * ОТ вход;

Нека създадем обобщена таблица, която ще обобщи записа на таблицата „Тест“, използвайки заявката по-долу. Командата обединява същите стойности на колоната „Id“ и „name“ в един ред, като взема сумата от стойностите на колоната „заплата“ за едни и същи данни според „Id“ и „name“. Също така се казва колко пъти е възникнала една стойност в конкретния набор от стойности.

>> SELECT ИД, име, сума (sal) sal, sum ((job = 'Doctor') :: int) Doctor, sum ((job = 'Writer') :: int) Writer, sum ((job = 'Officer ') :: int) "Служител" ОТ Тестова ГРУПА ИД, име;

Примерна обобщена таблица с TableFunc:

Ще започнем, като обясним основната си точка от реалистична гледна точка и след това ще опишем създаването на обобщената таблица в стъпки, които ни харесват. И така, на първо място, трябва да добавите три таблици, за да работите върху пивот. Първата таблица, която ще създадем, е „Грим“, която ще съхранява информация относно основите на грима. Опитайте заявката по-долу в командния ред, за да създадете тази таблица.

>> СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА Грим (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

След създаването на таблица „Грим“, нека добавим няколко записа към нея. Ще изпълним изброената по-долу заявка в черупката, за да добавим 10 записа към тази таблица.

Трябва да създадем друга таблица, наречена „потребители“, която ще съхранява записите на потребителите, използващи тези продукти. Изпълнете заявката по-долу в черупката, за да създадете тази таблица.

>> СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА потребители (user_id int ОСНОВЕН КЛЮЧ, u_name varchar (100) НЕ НУЛО);

Вмъкнахме 20-те записа за таблицата „потребители“, както е показано на изображението по-долу.

Имаме друга таблица, "makeup_user", която ще съхранява взаимните записи както на таблицата "Грим", така и на "потребители". Той има друго поле, „цена“, което ще спести цената на продукта. Таблицата е генерирана с помощта на заявената по-долу заявка.

>> СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА makeup_user (ID int PRIMARY KEY, Mid int NOT NULL REFERENCE Грим (make_Id), Uid int NOT NULL REFERENCE потребители (user_id), десетична цена (18,2));

В тази таблица сме вмъкнали общо 56 записа, както е показано на снимката.

Нека създадем изглед допълнително, за да го използваме за генерирането на обобщена таблица. Този изглед използва ВЪТРЕШНО присъединяване, за да съответства на стойностите на колоната на първичния ключ на всичките три таблици и извлича „името“, „името на продукта“ и „цената“ на продукт от таблица „клиенти“

>> CREATE VIEW v_makeup_users AS SELECT c.u_name, стр.p_name, бр.цена ОТ потребители c ВЪТРЕШНО ПРИСЪЕДИНЕНИЕ makeup_user pc ON c.user_id = pc.Uid INNER JOIN Грим p ON Бр.Mid = p.make_Id;

За да използвате това, трябва първо да инсталирате пакета tablefunc за базата данни, която искате да използвате. Този пакет е вграден в PostgreSQL 9.1 и по-късно освободен чрез изпълнение на посочената по-долу команда. Пакетът tablefunc вече е активиран за вас.

>> СЪЗДАЙТЕ РАЗШИРЕНИЕ, АКО НЕ СЪЩЕСТВУВА tablefunc;

След създаването на разширението е време да използвате функцията Crosstab () за създаване на обобщена таблица. Така че ще използваме следната заявка в черупката на командния ред, за да го направим. Тази заявка първо извлича записа от новосъздадения „View“. Тези записи ще бъдат подредени и групирани по възходящ ред на колони 'u_name' и 'p_name'. В таблицата сме посочили името на грима за всеки клиент, който са закупили, и общите разходи за закупени продукти. Приложихме оператора UNION ALL в колоната „p_name“, за да обобщим отделно всички продукти, закупени от един клиент. Това ще обобщи всички разходи за продукти, закупени от потребител, в една стойност.

Нашата Pivot таблица е готова и се показва на изображението. Ясно можете да видите, че някои пространства на колони са празни под всяко p_name, защото те не са закупили конкретния продукт.

Заключение:

Вече се научихме блестящо как да създадем обобщена таблица, за да обобщим резултатите от таблиците с и без използването на пакета Tablefunc.

Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...
Как да покажете OSD наслагване в приложения на цял екран за Linux и игри
Играта на цял екран или използване на приложения в режим на цял екран без разсейване може да ви откъсне от съответната системна информация, видима в п...
Топ 5 карти за залавяне на игри
Всички сме виждали и обичаме поточни игри в YouTube. PewDiePie, Jakesepticye и Markiplier са само някои от най-добрите геймъри, които са спечелили мил...