Поиск уникальных значений столбцов и использование выходных данных для следующего запроса - PullRequest
0 голосов
/ 20 октября 2019

Rails 6.0.0

ruby-2.6.2

Здравствуйте. У меня есть модель под названием "Группа", которая подключается к базе данных SQLite. В этой базе данных есть два столбца, которые меня интересуют: это совпадения как целое число и итерация как целое число.

Чего я хотел бы добиться, так это прочитать столбец итерации и вернуть каждую уникальную запись (1, Например, 2,3 ..... 50) затем для каждой возвращенной записи выполните поиск в таблице совпадений и сложите их вместе.

Я дошел до того, что нашел уникальные значения в итерациистолбец с этим кодом:

2.6.2 :001 > Group.pluck(:iteration).uniq
   (0.5ms)  SELECT sqlite_version(*)
   (0.2ms)  SELECT "groups"."iteration" FROM "groups"
 => [1, 2]

Это ожидается, поскольку у меня пока только два уникальных значения.

А также возможность суммировать вместе столбец совпадений при фильтрации на итерации.

2.6.2 :001 > Group.where("iteration = 1").where("hits >0").sum(:hits)
  (0.5ms)  SELECT sqlite_version(*)
  (0.1ms)  SELECT SUM("groups"."hits") FROM "groups" WHERE (iteration = 1) AND (hits >0)
  => 143

Я думаю, что мне нужен какой-то цикл, но я не уверен, как получить значение из команды .pluck в команду .where. Я попробовал это, но это не сработало. Будем благодарны за любые предложения о том, как создать этот запрос.

Group.pluck(:iteration).uniq.each do |a|
         hits_sum = Group.where("iteration = a ").where("hits >0").sum(:hits)  

 end

1 Ответ

0 голосов
/ 21 октября 2019

вам нужно указать group_by iteration и суммировать значения hits:

Group.group(:iteration).sum(:hits)

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