如何计算按孩子上次创建日期分组的独特父母?

时间:2014-01-29 18:27:11

标签: sql ruby-on-rails postgresql

parent有多个children,其中每个child都有一个created_at列。

我们假设数据看起来像这样:

Parent 1:  
- Child 1, created_at (last week sometime)
- Child 2, created_at (yesterday)
Parent 2:
- Child 3, created_at (today)
Parent 3:
- Child 4, created_at (today)

通过Rails使用PostgreSQL,如何获得parents最近child分组的唯一created_at计数?输出应如下所示:[Yesterday: 1, Today: 2]。请注意,由于父母有一个更近期的孩子,因此不会返回上周的created_at

我将使用原始SQL或ActiveRecord查询表单。谢谢!

2 个答案:

答案 0 :(得分:0)

Select Max(Created_at), parentName from parentTable inner join ChildTable on child.FKey = ParentTable.PKey Group by parentName 

答案 1 :(得分:0)

这样的事情应该有效。假设您的created_at字段中有时间部分,我将在分组之前删除时间部分。这会将孩子按created day分组。

SELECT date_trunc('day', c.created_at), COUNT(c.id)
FROM Parent p
    JOIN Child c on p.id = c.parent_id
GROUP BY date_trunc('day', c.created_at)
ORDER BY date_trunc('day', c.created_at) DESC