Грубо говоря три столбца, юид, ивент, дата-время, не массив. Например ивенты Х Х Х Х У У Х Х Х
Нужно вытащить по каждому юзеру ивенты, у которых датавремя меньше, чем у первого ивента У.
ну можно по разному, например так
select uid, arrayFilter( x-> x.1 < arr.1[indexOf(arr.2, 'Y)] , (arraySort( x -> x.1, groupArray( tuple(ts,event) as arr) ) from
events
group by uid