Funzioni di aggregazione
Lezione 11 di 13 del corso SQL avanzato di Coddy.
Le funzioni di aggregazione vengono usate per calcolare AVG() o MAX(), o qualsiasi altra funzione di aggregazione, fino alla riga corrente.
Ad esempio, potremmo calcolare il ricavo massimo ottenuto fino a ciascun periodo finale:
| month | revenue |
| 4 | 40 |
| 5 | 20 |
| 6 | 60 |
| 7 | 55 |
| 8 | 61 |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Questo restituirà:
| month | revenue | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
Per i mesi 4 e 5 il ricavo massimo è 40, per i mesi 5 e 6 il ricavo è 60 e per il mese 8 è 61. Questo perché, quando trova un nuovo ricavo più alto, scarta quello precedente e usa il più alto trovato fino a quel momento.
Per la funzione AVG(), sarà così:
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| month | revenue | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
Sfida
FacileI libri hanno molte pagine e ogni pagina contiene molte parole.
In questa sfida, calcoleremo diverse metriche relative a questi libri.
Recupera per ogni libro il numero totale di parole, il numero massimo di parole, il numero minimo di parole e la media delle parole fino a ogni pagina; chiama queste colonne rispettivamente: total_words, max_words, min_words, avg_words. Inoltre, assegna un rango denso alle pagine (per ogni libro) calcolando il rapporto: (avg_words-min_words)/(total_words-min_words) in ordine crescente per ogni libro; chiama questa colonna ratio_rank. Infine, ordina il risultato per book e ratio_rank in ordine crescente.
Provalo tu
Tutte le lezioni di SQL avanzato
4Riepilogo
Sfida finale #13Funzioni finestra, parte 2
Funzioni RANK e DENSE_RANKFunzione NTILEFunzioni di aggregazioneCriterio ROWS e RANGEEsercitati da solo: Compilatore Python online