рельсы 3 + activerecord: есть ли один запрос на подсчет (field1), сгруппированный по field2? - PullRequest
0 голосов
/ 19 августа 2011

Я пытаюсь найти лучший способ суммировать данные в таблице

У меня есть таблица Info с полями

id
region_number integer (NOT associated with another table)
member_name string
member_active T/F

Участники принадлежат региону, имеют имя и либо активны, либо нет.

Мне интересно, существует ли один запрос, который создаст таблицу с 3 столбцами и числом строк, равным уникальным номерам регионов:

For each unique region_number:
  region_number
  COUNT of members in that region
  COUNT of members in that region with active=TRUE

Предположим, у меня 50 регионов, я вижу, как это сделать с запросами 2x50, но это, безусловно, неправильный подход!

1 Ответ

1 голос
/ 19 августа 2011

Вы всегда можете сгруппировать несколько вещей, если вы готовы сделать небольшую часть пост-обработки:

SELECT region_number, COUNT(*) AS instances, member_active
  GROUP BY region_number, member_active
  WHERE region_number IN ?

Это позволяет сделать один запрос для всех номеров регионов одновременно. Будет одна строка для значений T, одна для F, но только при их наличии.

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

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