Iniziamo a conoscere funzioni analitiche di Oracle
Posted by Alessia, Roberta, Saverio ed Antonella | Posted in Analytics , Funzioni Analitiche , Oracle , SQL | Posted on 22:27
Parliamo di SQL e di aggregazione di dati.
Queste funzioni sono poco conosciute, ma estremamente utili, in quanto potenti e veloci.
Cosa fanno?
Parecchie cose. L'uso più comune è il calcolo di progressivi (Running Totals).
Un esempio? Gli estratti conto bancari con i saldi a fianco.
Se hai un conto un banca li conosci di sicuro.
Come si fa?
select data, descrizione, importo,
sum(importo) over (partition by 1 order by data) saldo_prog
from movimenti_banca where correntista=me_stesso order by data
L'istruzione chiave è:
sum(importo) over (partition by 1 order by data)
con cui:
- chiediamo al DB di considerare una partizione (insieme, finestra) di dati pari a tutta la query (partition by 1) ordinata per data movimento,
- e di utilizzare la funzione di gruppo (somma) via via in progressione.
Per chiarire il concetto di partizione o finestra, complichiamo un po' la nostra query:
select correntista, data, descrizione, importo,
sum(importo) over (partition by correntista order by data) saldo_prog
from movimenti_banca order by correntista , data
La finestra, in questo caso, è quella dei movimenti di ogni singolo correntista.
In questo modo riusciamo ad ottenere, in una sola interrogazione, sia i dati di dettaglio che le sintesi (o aggregazioni) di cui abbiamo bisogno.
Facile, efficiente e veloce.
Comments Posted (0)
Posta un commento