У меня есть оракул для моего приложения. Схема разработана таким образом, что пользовательские транзакции разбиты на 12 таблиц ежемесячных транзакций ... по одной на каждый месяц. Теперь я хочу получить 10 лучших пользователей, которые обращались к наибольшему количеству отдельных документов в заданном диапазоне дат.
В настоящее время у меня есть запрос, который выполняет countDistinct для документов для каждого пользователя, сортирует их в порядке убывания и выбирает 10 лучших результатов из этого.
Я запускаю этот запрос для каждой таблицы, и все результаты добавляются в список. Я должен отсканировать этот список и сделать сумму по ежемесячному счету, а затем сгруппировать по user_id, чтобы получить итоговые документы для каждого пользователя за все 12 месяцев.
Я понял, что этот счет не является правильным, поскольку один и тот же пользователь может получать доступ к одним и тем же документам в разные месяцы. с моей текущей логикой эти подсчеты будут суммироваться.
Мне нужно знать, какую стратегию мне следует использовать, чтобы результат был наиболее точным. Я знаю, что один из способов - это запрос из одной таблицы, что, безусловно, даст мне правильный ответ, но могу ли я достичь такого же результата от запроса всех 12 таблиц?
вот примерная месячная таблица за январь
class TxnSummJan {
Long id
Transaction trans
Users grauser
Resources graresource
Integer transactioncount
Date lastaccesseddate
Date currentdate
String accountid
String userlocation
String documentname
String eventdesc
}
Похожие таблицы за каждый месяц ..