2016-01-08 5 views
-1

Если у меня есть таблица с полем date_completed. Я хотел бы, чтобы вычислить разницу между этой датой и временем в настоящее время в месяцахРассчитать разницу между двумя датами и группой и подсчитать результаты

(date_completed.year * 12) + date_completed.month - (Date.today.year * 12) + Date.today.month 

, а затем сгруппировать результаты в зависимости от количества месяцев, например

No Months => Count 
1   => 10 
2   => 5 
3   => 6 

т.д.

Можно ли вычислить разницу между двумя датами в базе данных, а затем группу и считать результаты?

+0

что вы пытаетесь? вы хотите рельсы или sql? покажите нам образцы данных и результат желания. –

+0

Каков тип данных поля 'date_completed'? –

+0

date_completed - поле даты –

ответ

1

PostgreSQL конкретный SQL-запрос будет что-то вроде ниже - он использует extract и age метод PostgreSQL (см Documentation)

select extract(year from age(date_completed)) * 12 + 
     extract(month from age(date_completed)) as months, 
     count(*) from learn group by months; 

Пример вывода:

"months"|"count" 
     2|  2 
     3|  1 
     4|  1 

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

+0

отлично работает как решение Postgre-SQL –