2012-04-30 7 views
1

У меня есть таблица базы данных с тысячами строк. Я хотел бы запустить отчет, в котором перечислены все клиенты, которые потратили более 2000 фунтов стерлингов на нас.Rails sql query, фильтруя тысячи записей и суммируя один столбец

В таблице есть много столбцов, но те, Я заинтересован в следующем:

====================================================== 
| ClientKey | PVID | ShortText   | Payments | 
====================================================== 
| 13276  | 76668| Paid by PET HEALTH | 56.79 | 
| 12893  | 62368| Paid by PET HEALTH | 42.79 | 
| 23782  | 87468| Paid by PET HEALTH | 26.29 | 
| 23246  | 79868| Paid by PET HEALTH |-16.52 | 
====================================================== 

Мне нужно сгруппировать строки по ClientKey и суммировать столбцы платежей. Затем мне нужно отфильтровать их, удалив все, где сумма столбца «Платежи» составляет менее 2000 фунтов стерлингов. Я также должен игнорировать любые строки, где идентификатор 44444.

До сих пор я знаю, что мне нужно будет что-то похожее на следующее:

@clinical = Clinical.where("ShortText LIKE 'Paid by PET HEALTH' AND PVID != 44444") 

Это заботится о фильтрации строк вниз, чтобы исключить что-нибудь с PVID 44444 и только показывая строки, где ShortText содержит Paid by PET HEALTH.

Я не могу понять, как суммировать столбец платежей для каждого из клиентов ClientKey.

Конечный результат я хотел бы это способность сделать это:

Client Key 13276 has spent £99,999 so far. 
Client Key 21342 has spent £3,200 so far. 
Client Key 32312 has spent £2,110 so far. 

Любая помощь и/или указатели будут оценены!

ответ

3

Вы можете попробовать:

Clinical.select("ClientKey as client_key, sum(Payments) as total_payments").group("ClientKey").where("ShortText LIKE 'Paid by PET HEALTH' AND PVID != 44444") 

Для получения дополнительной информации о группировке см rails guide - ActiveRecord Query Interface

+0

'ActionView :: Template :: Error (mysql2 :: Ошибка: Неизвестный столбец 'ClinicalText' в', имеющий пункт ': SELECT ClientKey как client_key, sum (Платежи) как total_payments FROM 'клинический' GROUP BY ClientKey HAVING ClinicalText LIKE' Оплачено PET HEALTH 'И PVID! = 44444 ORDER BY FullDateTime DESC, total_payments DESC):' – dannymcc

+0

Это ошибка, которую я получаю , он, похоже, ищет таблицу, называемую «предложение», а не клиническую. Есть ли правильный способ сделать это? – dannymcc

+1

Nevermind, обмен файлами с .where сделал трюк! – dannymcc

 Смежные вопросы

  • Нет связанных вопросов^_^