Здравствуйте.
Функция uniqExact не обладает погрешностью (расчёт всегда точный, независимо от количества значений).
Проблем с этой функцией пока ещё не было замечено.
Проверить корректность работы можно, сравнив значения:
SELECT uniqExact(x) FROM table
и
SELECT count() FROM (SELECT DISTINCT x FROM table)
Результаты будут совпадать.
После вставки в SummingMergeTree, количество строк может уменьшаться при слиянии, если для некоторых первичных ключей, все суммируемые поля просуммировались в ноль. То есть, если вы вставляете в таблицу отрицательные значения полей, либо изначально нулевые значения.
Также результат работы запроса может меняться, если при распределённой обработке запроса, используются разные реплики, и эти реплики в данный момент времени содержат разные данные (то есть, некоторые реплики отстают).
Если всё-равно что-то не так, надо разбираться дальше. Попробуйте изолировать случай, в котором расчёт выглядит неправильно...