Description
Le combinateur ForEach
peut être appliqué à la fonction d'agrégation sum pour la transformer d'une fonction d'agrégation
qui opère sur les valeurs des lignes en une fonction d'agrégation qui opère sur des
colonnes de type Array, en appliquant l'agrégation à chaque élément du tableau à travers l'ensemble des lignes.
Exemple d'utilisation
Pour cet exemple, nous utiliserons le jeu de données hits disponible dans notre playground SQL.
La table hits contient une colonne appelée isMobile de type UInt8, qui peut valoir
0 pour ordinateur de bureau ou 1 pour mobile :
SELECT EventTime, IsMobile FROM metrica.hits ORDER BY rand() LIMIT 10Nous utiliserons le combinateur d’agrégation sumForEach pour analyser comment le
trafic entre ordinateur de bureau et mobile varie selon l’heure de la journée. Cliquez sur le bouton play
ci-dessous pour exécuter la query de manière interactive :
SELECT
toHour(EventTime) AS hour_of_day,
-- Utiliser sumForEach pour compter les visites sur ordinateur de bureau et sur mobile en une seule passe
sumForEach([
IsMobile = 0, -- Visites sur ordinateur de bureau (IsMobile = 0)
IsMobile = 1 -- Visites sur mobile (IsMobile = 1)
]) AS device_counts
FROM metrica.hits
GROUP BY hour_of_day
ORDER BY hour_of_day;