我有一个表像这样:选择N个去年值
id device group
-----------------
1 a 1000
2 a 1000
3 b 1001
4 b 1001
5 b 1001
6 b 1002
8 a 1003
9 a 1003
10 a 1003
11 a 1003
12 b 1004
13 b 1004
所有的id和组是连续的。我想要根据群组和设备选择id
和device
。把它看作是分页类型选择。获得最后group
是一个简单的内侧选择,但如何选择第二个最后一组,或第三最后一组 - 等
我试过行数函数是这样的:
SELECT * FROM
(SELECT *, ROW_NUMBER() OVER (PARTITION BY device ORDER BY group DESC) rn FROM data) tmp
WHERE rn = 1;
..但更改rn
是给我以前的ID,而不是以前的组。
我想与一个选择,可以容纳这些结果来结束:
设备= A,基团=最新:
id device group
10 a 1003
11 a 1003
设备= A,基团=最新 - 1:
id device group
1 a 1000
2 a 1000
任何人都知道如何做到这一点?
编辑:
使用情况是在汽车启动装置中的GPS,发送数据每30秒。想象一下,今天要开车。首先你去商店,然后你回家。第一次旅行是你开车去商店。第二次旅行是你开车回来。我想在地图上显示这些行程,但这意味着我需要确定上一次行程,然后再行前行程 - 无限期,直到行程结束。
为什么你要显示每台设备的多行? –
如果它更多地讲述了想象力,实际的使用案例是位于汽车上的GPS设备之旅,我想展示整个旅程。 – Jorg
听起来像[X Y问题](http://mywiki.wooledge.org/XyProblem)。实际上在这里做什么? – Bohemian