PostgreSQL

Pivot Met/Zonder Tablefunc

Pivot Met/Zonder Tablefunc

Een draaitabel is een krachtig hulpmiddel voor het schatten, samenstellen en beoordelen van gegevens om nog gemakkelijker patronen en trends te vinden. Draaitabellen kunnen worden gebruikt om gegevens in een gegevensset te aggregeren, sorteren, ordenen, herschikken, groeperen, totaal of gemiddeld te maken om gegevensassociaties en -afhankelijkheden echt te begrijpen. Het gebruik van een draaitabel als illustratie is de gemakkelijkste manier om te demonstreren hoe deze methode werkt. PostgreSQL 8.3 werd een paar jaar geleden gelanceerd en een nieuwe versie met de naam 'tablefunc' was toegevoegd. Tafelfunc is een component die verschillende methoden bevat die tabellen opleveren (dat wil zeggen, meerdere rijen). Deze aanpassing wordt geleverd met een zeer coole reeks functies. De kruistabelmethode, die zal worden gebruikt om draaitabellen te maken, is er een van. De kruistabelmethode gebruikt een tekstargument: een SQL-opdracht die onbewerkte gegevens retourneert in de eerste lay-out en een tabel retourneert in de volgende lay-out.

Voorbeeld draaitabel zonder TableFunc:

Om aan de PostgreSQL-draaitafel te gaan werken met de 'tablefunc'-module, moet je proberen een draaitabel te maken zonder deze. Laten we dus de PostgreSQL-opdrachtregelshell openen en de parameterwaarden opgeven voor de vereiste server, database, poortnummer, gebruikersnaam en wachtwoord. Laat deze parameters leeg als u de standaard geselecteerde parameters wilt gebruiken.

We zullen een nieuwe tabel maken met de naam 'Test' in de database 'test' met enkele velden erin, zoals hieronder weergegeven.

>> MAAK TABEL Test(Id int, naam varchar(20), sal int, job varchar(20));

Nadat u een tabel hebt gemaakt, is het tijd om enkele waarden in de tabel in te voegen, zoals blijkt uit de onderstaande query:.

>> INSERT INTO Test (Id, name, sal, job) WAARDEN (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', 50000, 'Dokter'), (12, 'Raza', 40000, 'Officier'), (11, 'Raza', 60000, 'Dokter'), (12, 'Raza', 67000, 'Officier'), ( 13, 'Saeed', 85000, 'Schrijver'), (13, 'Saeed', 69000, 'Officier'), (13, 'Saeed', 90000, 'Dokter');

U kunt zien dat de relevante gegevens met succes zijn ingevoerd. U kunt zien dat deze tabel meer dan 1 dezelfde waarden heeft voor id, naam en job.

>> KIES * VAN ingang;

Laten we een draaitabel maken, die het record van de tabel 'Test' samenvat met behulp van de onderstaande query. De opdracht voegt dezelfde waarden van de kolom 'Id' en 'naam' in één rij samen, terwijl de som van de kolomwaarden 'salaris' voor dezelfde gegevens wordt genomen volgens 'Id' en 'naam'. Het geeft ook aan hoe vaak een waarde is voorgekomen in de specifieke reeks waarden.

>> SELECT Id, naam, sum(sal) sal, sum((job = 'Dokter')::int) Dokter, sum((job = 'Schrijver')::int) Schrijver, sum((job = 'Officer' ')::int) "Officer" VANUIT TestGROEP OP Id, naam;

Voorbeeld draaitabel met TableFunc:

We beginnen met het uitleggen van ons belangrijkste punt vanuit een realistisch standpunt, en dan zullen we het maken van de draaitabel beschrijven in stappen die we leuk vinden. Dus allereerst moet je drie tabellen toevoegen om aan een spil te werken. De eerste tabel die we gaan maken is 'Make-up', waarin informatie wordt opgeslagen over essentiële make-up. Probeer de onderstaande query in de opdrachtregelshell om deze tabel te maken:.

>> MAAK TABEL ALS NIET BESTAAT Make-up (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

Laten we na het maken van de tabel 'Make-up' er enkele records aan toevoegen. We zullen de onderstaande query in de shell uitvoeren om 10 records aan deze tabel toe te voegen.

We moeten een andere tabel maken met de naam 'users' die de records zal bevatten van de gebruikers die deze producten gebruiken. Voer de onderstaande query uit in de shell om deze tabel te maken.

>> MAAK TABEL INDIEN NIET BESTAAT gebruikers (user_id int PRIMARY KEY, u_name varchar(100) NOT NULL);

We hebben de 20 records voor de tabel 'gebruikers' ingevoegd zoals weergegeven in de onderstaande afbeelding.

We hebben nog een tabel, 'makeup_user', die de wederzijdse records van zowel de tabel 'Makeup' als 'users' bevat. Het heeft een ander veld, 'prijs', waarmee de prijs van het product wordt bespaard. De tabel is gegenereerd met behulp van de onderstaande query:.

>> MAAK TABEL INDIEN NIET BESTAAT 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));

We hebben in totaal 56 records in deze tabel ingevoegd, zoals weergegeven in de afbeelding.

Laten we een verdere weergave maken om deze te gebruiken voor het genereren van een draaitabel. Deze weergave gebruikt INNER Join om de waarden van de primaire sleutelkolom van alle drie de tabellen te matchen en de 'name', 'product_name' en de 'cost' van een product uit een tabel 'customers' op te halen

>> MAAK WEERGAVE v_makeup_users ALS SELECTEER c.u_name, p.p_naam, pc.prijs VAN gebruikers c INNER WORD LID makeup_user pc AAN c.user_id = pc.Uid INNER JOIN Make-up p OP pc.Midden = p.make_Id;

Om dit te gebruiken, moet u eerst het tablefunc-pakket installeren voor de database die u wilt gebruiken. Dit pakket is ingebouwd PostgreSQL 9.1 en later vrijgegeven door de onderstaande opdracht uit te voeren. Het tablefunc-pakket is nu voor u ingeschakeld.

>> MAAK UITBREIDING ALS NIET BESTAAT tablefunc;

Nadat u de extensie heeft gemaakt, is het tijd om de functie Crosstab() te gebruiken om een ​​draaitabel te maken. Dus we zullen de volgende query gebruiken in de opdrachtregelshell om dit te doen:. Deze query haalt eerst het record op uit de nieuw gemaakte 'View'. Deze records worden geordend en gegroepeerd in oplopende volgorde van de kolommen 'u_name' en 'p_name'. We hebben hun make-upnaam vermeld voor elke klant die ze hebben gekocht, en de totale kosten van gekochte producten in de tabel. We hebben de UNION ALL-operator toegepast op de kolom 'p_name' om alle producten die door één klant zijn gekocht afzonderlijk op te sommen. Hiermee worden alle kosten van producten die door een gebruiker zijn gekocht in één waarde samengevat.

Onze draaitabel is klaar en wordt weergegeven in de afbeelding. Je kunt duidelijk zien dat sommige kolomruimten leeg zijn onder elke p_name omdat ze dat specifieke product niet hebben gekocht.

Conclusie:

We hebben nu op briljante wijze geleerd hoe we een draaitabel kunnen maken om de resultaten van de tabellen samen te vatten met en zonder het gebruik van het Tablefunc-pakket.

Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...