в запросе? например из ['x', 'y', 'x'] получить что-то вроде ['x', 2, 'y', 1] или в каком-либо другом формате?
SELECT ['x', 'y', 'x'] AS x, arrayReduce('sumMap', [x], [replicate(1, x)]) AS res Query id: 6c0c5b1a-1502-414e-8d99-63e53691bf6d ┌─x─────────────┬─res───────────────┐ │ ['x','y','x'] │ (['x','y'],[2,1]) │ └───────────────┴───────────────────┘
О, спасибо, sumMap я проглядел в документации.
можно и без sumMap: SELECT ['x', 'y', 'x'] AS ar, arrayMap(x -> (x, arrayCount(y -> (y = x), ar)), arrayDistinct(ar)) AS result ┌─ar────────────┬─result────────────┐ │ ['x','y','x'] │ [('x',2),('y',1)] │ └───────────────┴───────────────────┘
Да, Но нужно быть осторожным с вложенными arrayMap (arrayCount) Они внутри довольно странно работают https://kb.altinity.com/altinity-kb-functions/array-like-memory-usage/
Обсуждают сегодня