我有一个包含三列的表:key,value并且timestamp,该key列已编制索引,数据如下所示:
key | value | timestamp
-----+-------+---------------------
A | 1.3 | 2018-12-30 00:00:00
A | 1.1 | 2018-12-29 00:00:00
C | 1.1 | 2019-01-02 00:00:00
B | 0.1 | 2019-01-02 00:00:00
B | 0.3 | 2018-12-30 00:00:00
A | 1.1 | 2018-12-31 00:00:00
B | 0.2 | 2019-01-01 00:00:00
A | 0.9 | 2019-01-02 00:00:00
Run Code Online (Sandbox Code Playgroud)
如何为key表中的每个不同选择最早的值?我需要这些输出:
key | value | timestamp
-----+-------+---------------------
A | 1.1 | 2018-12-29 00:00:00
B | 0.3 | 2018-12-30 00:00:00
C | 1.1 | 2019-01-02 00:00:00
Run Code Online (Sandbox Code Playgroud)
用途distinct on:
select distinct on (key) t.*
from t
order by key, timestamp;
Run Code Online (Sandbox Code Playgroud)
这通常是Postgres中最有效的方法.特别是,它可以利用索引来(key, timestamp)提高性能.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |