我是postgresql的新手(特别是,我使用timescaledb),对时间窗口有一个问题。
数据:
date |customerid|names
2014-01-01|1 |Andrew
2014-01-02|2 |Pete
2014-01-03|2 |Andrew
2014-01-04|2 |Steve
2014-01-05|2 |Stef
2014-01-06|3 |Stef
2014-01-07|1 |Jason
2014-01-08|1 |Jason
问题是:回到时间x天(从每一行看),有多少不同的名字共享相同的id?
对于x=2天,结果应如下所示:
date |customerid|names |count
2014-01-01|1 |Andrew |1
2014-01-02|2 |Pete |1
2014-01-03|2 |Andrew |2
2014-01-04|2 |Steve |3
2014-01-05|2 |Stef |3
2014-01-06|3 |Stef |1
2014-01-07|1 |Jason |1
2014-01-08|1 |Jason |1
在postgresql中,这是否可能不在每一行上使用循环?
附加信息:数据的时间间隔在现实中不是等距的。
非常感谢你!
1条答案
按热度按时间n6lpvg4x1#
如果您可以使用窗口功能,那就太好了:
唉,这是不可能的。因此可以使用横向连接:
为了提高性能,您需要一个索引
(id, date, name)
.