У меня есть таблица следов со следующей структурой
id | country_iso | object_id | created_at
Каждый объект может иметь множество записей для одного или более страны. Мне нужно выяснить, сколько объектов сейчас в каждой стране.
Я не могу просто сгруппировать его по country_iso, потому что в этом случае я получу количество записей для каждой страны, но не количество объектов.
Я не могу сгруппировать его по country_iso и object_id, потому что за это время я получу количество записей для каждого объекта в каждой стране.Группировка запросов для Монго и рельсов
Итак, кажется, мне нужно получить последнюю запись для каждого объекта, а затем сгруппировать по странам и получить количество. Также мне нужно избегать случаев, когда последняя запись имеет country_iso, равную null. Поэтому, если последняя запись для объекта равна null, мы должны получить запись до последнего и, следовательно, одну (так, последняя с нулевым значением country_iso).
Пример:
1 | US | 1 | 25.02.02
2 | null | 1 | 26.02.02
3 | UK | 2 | 25.02.02
4 | UK | 3 | 25.02.02
5 | UK | 4 | 25.02.02
6 | US | 4 | 26.02.02 `
Результат будет
US | 2
UK | 2
Заранее спасибо за любые идеи.
P.S .: Обратите внимание, что имеется много данных (более 100 000 объектов и более 10 записей для каждого), и оно находится на удаленном сервере. Таким образом, я не могу получить данные и как-то пересчитать их, используя ruby на главном сервере.
100 000? Возможно, вы сможете сделать это в Ruby, если вам нужно делать это часто ...! –
Я должен сделать это один раз (по крайней мере, это было запрошено как раз-только для данных) – RaskolnikOFF