┌─tp─┬─count()─┬─groupArray(value)─┬─groupArray(d)─────────────────────────────────────────┐
│ 1 │ 4 │ [1,2,3,4] │ ['2000-02-01','2000-02-04','2000-02-05','2000-04-05'] │
│ 2 │ 4 │ [1,2,3,4] │ ['2000-02-01','2000-02-04','2000-02-05','2000-04-05'] │
│ 3 │ 2 │ [2,4] │ ['2000-02-04','2000-04-05'] │
│ 4 │ 2 │ [1,3] │ ['2000-02-01','2000-02-05'] │
Хочется получить такое:
┌─tp─┬─count()─┬─groupArray(value)─┬─groupArray(d)─────────────────────────────────────────┐
│ 1 │ 2 │ [1,2] │ ['2000-02-01','2000-02-04']
│ 2 │ 2 │ [1,2] │ ['2000-02-01','2000-02-04']
│ 3 │ 2 │ [2,4] │ ['2000-02-04','2000-04-05'] │
│ 4 │ 2 │ [1,3] │ ['2000-02-01','2000-02-05'] │
Еще, когда пытаюсь отсортировать по d, то получаю ошибку, что выбираемый столбец не под агрегацией:
select tp, count(), groupArray(value), groupArray(d) FROM last5table GROUP BY tp ORDER BY d LIMIT 2 BY tp;
Code: 215. DB::Exception: Received from clickhouse-server:9000, 172.17.0.4. DB::Exception: Column d is not under aggregate function and not in GROUP BY..
Не понимаю, что я делаю не так :(
Второй вопрос. Можно ли сделать материализованное представление и пронумеровать все строки согласно сортировки?
Т.е. для данных приведенных выше и запроса:
SELECT
tp,
argMax(value, d)
FROM last5table
WHERE tp != 1
GROUP BY tp
ORDER BY tp ASC
┌─tp─┬─argMax(value, d)─┐
│ 2 │ 4 │
│ 3 │ 4 │
│ 4 │ 3 │
└────┴──────────────────┘
Хочется видеть дополнительный столбец number:
┌-number-─tp─┬─argMax(value, d)─┐
│ 1 | 2 │ 4 │
│ 2 | 3 │ 4 │
│ 3 | 4 │ 3 │
└───---─┴────-----──────────────┘
И если появится данные с tp = 0, чтобы материализованное представление перестроилось и нумерация осталась валидна (для tp=0 number=1, для tp=2 number=2 и т.п.).
Подскажите куда копать :)