我有以下数据,每当出现一个userid + customerid组合时,我都会尝试计算每条记录。如果相同的组合在其他组合之间返回,我想再次启动计数器。但是,当我在Db2中的以下代码中使用row_number()时,我似乎无法使其正常运行,以便计数器在1时为每个随时间出现的userid + customerid重新启动。有没有人有其他建议?非常感谢你。
class Transaction(Base):
__table__ = Table('transaction', metadata,
Column('transaction_id', Integer, primary_key=True),
Column('seller_id', Integer, ForeignKey('users.user_id')),
Column('buyer_id', Integer, ForeignKey('users.user_id')),
autoload=True)
seller = relationship('User', foreign_keys=[__table__.c.seller_id])
buyer = relationship('User', foreign_keys=[__table__.c.buyer_id])
答案 0 :(得分:0)
select userid, customer, event_name, event_timestamp,
row_number() over (partition by userid, customer, grp
order by event_timestamp) as steps
from
(
select t.*,
(row_number() over (order by event_timestamp) -
row_number() over (partition by userid, customer order by event_timestamp)
) as grp
from trackhist t
) t
order by userid, event_timestamp
<强>输出:强>
在这里演示:
请注意,演示使用SQL Server,因为DB2不是Rextester的选项(至少目前为止)。但是,该查询应该在DB2中工作,假设ROW_NUMBER()
在两个数据库中的行为相同。