Pivot con/senza tablefunc

Pivot con/senza tablefunc

Una tabella pivot è uno strumento potente per stimare, compilare e rivedere i dati per trovare modelli e tendenze ancora più facili. Le tabelle pivot possono essere utilizzate per aggregare, ordinare, organizzare, riorganizzare, gruppo, totale o dati medi in un set di dati per comprendere veramente le associazioni e le dipendenze dei dati. L'uso di una tabella pivot come illustrazione è il modo più semplice per dimostrare come funziona questo metodo. PostgreSQL 8.3 è stato lanciato qualche anno fa e una nuova versione chiamata 'TableFunc' è stato aggiunto. TableFunc è un componente che contiene diversi metodi che producono tabelle (cioè più righe). Questa modifica è dotata di una gamma molto interessante di funzionalità. Il metodo crosstab, che verrà utilizzato per creare tabelle per pivot, è tra questi. Il metodo CrossStab prende un argomento testuale: un comando SQL che restituisce dati grezzi nel primo layout e restituisce una tabella nel layout successivo.

Esempio di pivot tabella senza tablefunc:

Per iniziare a lavorare sul pivot PostgreSQL con il modulo "TableFunc", devi provare a fare una tabella per pivot senza di essa. Quindi apriamo la shell della riga di comando PostgreSQL e forniamo i valori dei parametri per il server, il database, il numero di porta, il nome utente e la password richiesti. Lascia vuoti questi parametri se si desidera utilizzare i parametri selezionati predefiniti.

Crearemo una nuova tabella denominata "test" nel database "test" con alcuni campi in esso, come visualizzato di seguito.

>> Crea test della tabella (Id int, nome Varchar (20), Sal int, lavoro Varchar (20));

Dopo aver creato una tabella, è tempo di inserire alcuni valori nella tabella, come mostrato dalla query seguente.

>> INSERT IN TEST (ID, NAME, SAL, GOB) VALORI (11, "AQSA", 45000, "Writer"), (11, "Aqsa", 48000, "ufficiale"), (11, "aqsa", 50000, "dottore"), (12, "raza", 40000, "ufficiale"), (11, "raza", 60000, "dottore"), (12, "raza", 67000, "ufficiale"), ( 13, 'Saeed', 85000, 'Writer'), (13, 'Saeed', 69000, 'ufficiale'), (13, 'Saeed', 90000, 'dottore');

Puoi vedere che i dati pertinenti sono stati inseriti correttamente. Puoi vedere che questa tabella ha più di 1 degli stessi valori per ID, nome e lavoro.

>> Seleziona * da input;

Creiamo una tabella pivot, che riassumerà il record del "test" della tabella utilizzando la query seguente. Il comando unisce gli stessi valori della colonna "ID" e "Nome" in una riga durante l'assunzione della somma dei valori della colonna "stipendio" per gli stessi dati in base a "id" e "nome". Sta anche raccontando quante volte si è verificato un valore nel particolare insieme di valori.

>> Seleziona id, nome, somma (sal) sal, somma ((job = 'dooct ') :: int) "ufficiale" del gruppo di test per id, nome;

Esempio di pivot tabella con tablefunc:

Inizieremo spiegando il nostro punto principale da un punto di vista realistico, e poi descriveremo la creazione della tabella pivot nei passaggi che ci piacciono. Quindi, prima di tutto, devi aggiungere tre tabelle per lavorare su un perno. La prima tabella che creeremo è il "trucco", che memorizzerà le informazioni sugli elementi essenziali del trucco. Prova la query seguente nella shell della riga di comando per creare questa tabella.

>> Crea tabella se non esiste trucco (Make_id int Key Primary, p_name varchar (100) non null);

Dopo la creazione del tavolo "trucco", aggiungiamo alcuni record ad esso. Eseguiremo la query sotto l'elenco di seguito nella shell per aggiungere 10 record a questa tabella.

Dobbiamo creare un'altra tabella denominata "utenti" che terrà i record degli utenti utilizzando tali prodotti. Eseguire la query di seguito nella shell per creare questa tabella.

>> Crea tabella se non esiste utenti (User_id Int Primary Key, u_name Varchar (100) non null);

Abbiamo inserito i 20 record per gli "utenti" della tabella come mostrato nell'immagine seguente.

Abbiamo un'altra tabella, "makeup_user", che terrà i record reciproci sia della tabella "trucco" che di "utenti". Ha un altro campo, "prezzo", che risparmierà il prezzo del prodotto. La tabella è stata generata utilizzando la query indicata sotto.

>> Crea tabella se non esiste makeup_user (Id int primaria chiave, Mid int non null References Makeup (make_id), uid int non null riferimenti per gli utenti (user_id), decimale di prezzo (18,2));

Abbiamo inserito un totale di 56 record in questa tabella, come mostrato nella foto.

Creiamo ulteriormente una vista per usarlo per la generazione di una tabella per pivot. Questa vista utilizza un join interno per abbinare i valori della colonna della chiave primaria di tutte e tre le tabelle e recuperare il "nome", "Product_name" e il "costo" di un prodotto da una tabella "clienti"

>> Crea View v_makeup_users come selezionare c.U_name, p.p_name, pc.prezzo dagli utenti c interno unito a makeup_user PC su c.user_id = PC.UID INTER INNIGLIO MAKEUP P SU.Mid = p.make_id;

Per utilizzare questo, è necessario prima installare il pacchetto TableFunc per il database che si desidera utilizzare. Questo pacchetto è incorporato postgresql 9.1 e successivamente rilasciato eseguendo il comando di seguito. Il pacchetto TableFunc è stato abilitato per te ora.

>> Crea estensione se non esiste TableFunc;

Dopo aver creato l'estensione, è tempo di utilizzare la funzione crossstab () per creare una tabella per pivot. Quindi useremo la seguente query nella shell della riga di comando per farlo. Questa query sta prima ottenendo il record dalla nuova visione ". Questi record saranno ordinati e raggruppati dall'ordine ascendente delle colonne "u_name" e "p_name". Abbiamo elencato il loro nome di trucco per ogni cliente, che hanno acquistato e il costo totale dei prodotti acquistati nella tabella. Abbiamo applicato l'Unione All Operator sulla colonna "P_Name" per riassumere tutti i prodotti acquistati da un cliente separatamente. Ciò riassumerà tutti i costi dei prodotti acquistati da un utente in un solo valore.

Il nostro tavolo per pivot è stato pronto e visualizzato nell'immagine. Puoi vedere chiaramente che alcuni spazi di colonne sono vuoti sotto ogni P_name perché non hanno acquistato quel particolare prodotto.

Conclusione:

Ora abbiamo imparato brillantemente come creare una tabella pivot per riassumere i risultati delle tabelle con e senza l'uso del pacchetto di tabellefunc.