我有一个包含一些数据的表格,如下所示:
id | type | timestamp | 1 | 1 | 0001 | 2 | 2 | 0002 | 3 | 3 | 0003 | 4 | 2 | 0004 | 5 | 2 | 0005 | 6 | 2 | 0006 | 7 | 2 | 0007 | 8 | 2 | 0008 | 9 | 2 | 0009 | 10 | 3 | 0010 |
我需要的是每种类型最近的5个,订单并不重要。
id | type | timestamp | 1 | 1 | 0001 | 5 | 2 | 0005 | 6 | 2 | 0006 | 7 | 2 | 0007 | 8 | 2 | 0008 | 9 | 2 | 0009 | 3 | 3 | 0003 | 10 | 3 | 0010 |
我猜一个子选择,分组或某种联合是有序的,但我只是不确定如何去获取它。
答案 0 :(得分:2)
您可以使用Window功能。请参阅manual。
示例:
SELECT id, type, timestamp
FROM
(SELECT id, type, timestamp,
rank() OVER (PARTITION BY type ORDER BY timestamp DESC) AS pos
FROM table
) AS t
WHERE pos < 5;