Fonctions de fenêtre dans Snowflake
Jake Roach
Field Data Engineer
Utilisé pour effectuer un calcul sur une "fenêtre" de lignes et retourner une valeur pour chaque ligne
$$
$$
Classement
RANK, DENSE_RANKFIRST_VALUE, LAST_VALUE, NTH_VALUELAG, LEADAgrégation
COUNT, SUM, AVGLes fonctions de fenêtre nous aident à répondre à de nouvelles questions !
$$
Une fonction d'agrégation traditionnelle doit avoir une clause GROUP BY.


Ne nécessitent pas de GROUP BY !
SELECT
<other-fields>,
ROW_NUMBER() OVER(
ORDER BY <field>
) AS <alias>
FROM SCHEMA.table
...;
La fonction ROW_NUMBER() attribue un numéro de ligne à chaque enregistrement dans un ensemble de résultats
$$
OVER() définit la fenêtreGROUP BY !SELECT
customer_id,
event_name,
-- Attribuer un numéro de ligne à chaque
-- enregistrement dans l'ensemble de résultats
ROW_NUMBER() OVER(
ORDER BY time_spent_minutes
) AS row_num
FROM concerts.attendance;
customer_id | event_name | row_num
------------- | ------------ | ---------
1931292 | Music Fest | 1
5462384 | Elton John | 2
7732891 | Coachella | 3
3124888 | Porch Fest | 4
$$
$$
Rappelez-vous la syntaxe : ROW_NUMBER() OVER( ORDER BY ...) !
Fonctions de fenêtre dans Snowflake