【发布时间】:2017-03-14 17:44:39
【问题描述】:
我有一个来自成员的事务的 Redshift 表,并且与每个事务相关联的是一个状态:
date|member_id|transaction_amount|state
----------+---------+------------------+-----
01/05/2012|aaaaaaaaa| 35.50| WA
02/05/2012|aaaaaaaaa| 35.50| WA
03/05/2012|aaaaaaaaa| 35.50| WA
...
01/05/2013|aaaaaaaaa| 35.50| WA
02/05/2013|aaaaaaaaa| 35.50| CA
03/05/2013|aaaaaaaaa| 35.50| CA
...
我想做的是,对于每笔交易,选择过去 12 个月中发生最多的状态,并将其与给定交易相关联。
我的第一个想法是像这样进行连接:
select t0.*, t1.state from transactions t0
join transactions t1
on datediff('month', t1.date, t0.date) between 0 and 12
然后我将按date、member_id、其他未显示的列、transaction_amount 分组,并计算每个状态的出现次数,保留出现最多的状态(在该组中具有最大的 count) .
我在做最后一部分时遇到了麻烦。我的问题是,如何从该表中为每个组选择最频繁的状态?另一个问题是,有没有更有效的方法来做到这一点(避免这种加入)?
【问题讨论】:
标签: sql postgresql amazon-redshift