мало ли кто-то проходил этот путь или может тыкнуть в ссылку примеры подходы
Если я правильно понял вашу ситуацию, то стоит строить витрину с агрегатами, к которой будут ходить за данными. Обновлять эту витрину раз в сутки/час/10минут - зависит от ситуации. Опять же, если правильно понял, то у вас сейчас запрос чуть ли не на транзакциях/логах, это, конечно, не вариант для построения бизнес витрины, так как по мимо потенциально долгой работы запроса, модет быть ещё и проблема с кривизной данных, в витрине вы сможете эту кривизну убирать. Агрегат можно хранить где угодно, по сути, так как он будет, скорее всего, компактным. Для супер скорости сможете добавить партиционирование по компнии и/или дате.