`os` Int8,
`stop` DateTime,
`min_time` SimpleAggregateFunction(min, DateTime('Europe/Moscow')),
`max_time` SimpleAggregateFunction(max, DateTime('Europe/Moscow')),
`count` SimpleAggregateFunction(sumWithOverflow, Int32),
`cnt` SimpleAggregateFunction(sumWithOverflow, Int32),
`time` SimpleAggregateFunction(sumWithOverflow, Int64)
)
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(toDateTime(stop))
ORDER BY (device_os, os, stop)
но движок почему-то проводит агрегацию не полностью и в результате такое
SELECT *
FROM device_os_1d
WHERE (device_os = 'Android/8') AND (stop = '2020-11-05 00:00:00') AND (os = 1)
┌─device_os─┬─os─┬────────────────stop─┬────────────min_time─┬────────────max_time─┬────count─┬──────cnt─┬──────────time─┐
│ Android/8 │ 1 │ 2020-11-05 00:00:00 │ 2020-11-03 18:51:56 │ 2020-12-24 23:56:19 │ 33120157 │ 33120157 │ 2489199251150 │
└───────────┴────┴─────────────────────┴─────────────────────┴─────────────────────┴──────────┴──────────┴───────────────┘
┌─device_os─┬─os─┬────────────────stop─┬────────────min_time─┬────────────max_time─┬────count─┬──────cnt─┬──────────time─┐
│ Android/8 │ 1 │ 2020-11-05 00:00:00 │ 2020-11-04 04:37:55 │ 2020-12-25 12:31:45 │ 17724304 │ 17724304 │ 1666960268699 │
└───────────┴────┴─────────────────────┴─────────────────────┴─────────────────────┴──────────┴──────────┴───────────────┘
2 rows in set. Elapsed: 0.007 sec.
что делаю не так?
При выборке данных из таблицы AggregatingMergeTree, используйте GROUP BY и те же агрегатные функции, что и при вставке данных, но с суффиксом -Merge. https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/aggregatingmergetree/amp/
спасибо. только заработало без суффикса, ибо SimpleAggregate
Обсуждают сегодня