Comprensione di SQL Iniziare con le funzioni di finestra

Comprensione di SQL Funzioni di finestra

Ottieni di più dalle tue aggregazioni utilizzando le funzioni di finestra SQL

Foto di Components AI su Unsplash

Introduzione

Quando si tratta di aggregare i dati in SQL, le funzioni di finestra offrono una maggiore flessibilità rispetto alle aggregazioni utilizzate in combinazione con le clausole GROUP BY. Sebbene entrambi gli approcci svolgano funzioni simili, le funzioni di finestra si differenziano per la struttura degli output. In particolare, le funzioni di finestra applicano operazioni su un insieme di righe correlate, dove la relazione è determinata da qualche raggruppamento, o partizione, delle righe della tabella. E, a differenza delle loro controparti non di finestra che riducono le righe a una singola riga di output, tutte le righe conservano le loro identità separate e sono presenti nella tabella di output.

Questo comportamento è piuttosto diverso dalla solita aggregazione e può estendere notevolmente il tuo set di strumenti analitici oltre alle semplici statistiche di sintesi. Ad esempio, le funzioni di finestra ci consentono di calcolare somme cumulative, medie mobili e persino misure statistiche come i punteggi z.

In questo post daremo un’occhiata all’anatomia e alla funzionalità di base delle funzioni di finestra SQL. L’attenzione qui è piuttosto rudimentale, quindi se non hai mai incontrato le funzioni di finestra o hai esperienza limitata nell’uso delle stesse, speriamo che questo ti interessi.

Per questo post useremo alcuni dati di sintesi di alto livello sulle competizioni della Coppa del Mondo FIFA dal 1930 al 2022. I piazzamenti e le statistiche sono stati tratti da Wikipedia e sono disponibili con licenza Creative Commons Attribution Share-Alike (CC-BY-SA). I dati e le informazioni correlate possono essere trovati qui. Per scopi di questo blog ho importato la tabella nel mio database PostgresSQL, ma se vuoi seguirmi puoi scaricare una copia della tabella dal mio repository Git. Nel mio database questa tabella si chiama world_cup_placings e un output è mostrato di seguito:

|year|start_date|end_date|host_country |first_place |second_place  |third_place  |fourth_place|total_teams|matches_played|total_goals|total_attendance||----|----------|--------|-------------|------------|--------------|-------------|------------|-----------|--------------|-----------|----------------||1930|13/07/30  |30/07/30|Uruguay      |Uruguay     |Argentina     |United…