Sql - правильная сумма поля базовой таблицы с левым внешним соединением - PullRequest
0 голосов
/ 03 мая 2019

У меня есть этот метод, который возвращает мне итоговый результат, у меня есть поле суммы в таблице заказов. После этого запроса мне нужно поле суммы суммы, но в то же время я не могу изменить get_raw_records, потому что оставил внешний требуется объединение и фильтры

def get_raw_records
  Order.includes(:customers, :line_items).where(aasm_state: ['completed']).filers(.....)
end

get_raw_records.sum(:amount)

Эта сумма неверна, поскольку она имеет повторяющиеся заказы из-за левого внешнего объединения с позициями

Я пробую другие способы, например, но это отличает сумму, а не от записей заказов.

get_raw_records.distinct.sum(:amount)

Любая помощь, чтобы сделать это? Я не могу изменить get_raw_records базовый запрос

1 Ответ

0 голосов
/ 03 мая 2019

перед выполнением второго запроса данные могут измениться.Вам нужно добавить в запрос такое поле -

sum(amount) over() as need_summ

и просто использовать это значение из любой строки результата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...