【发布时间】:2018-07-01 06:56:54
【问题描述】:
我在 SQlite 中有下表:
_id|token|状态|时间戳|心情|eta|名称|calc_eta __________________________________________________________________________ 168|iqmC.3aHMBGbl|ok|1516625084498|50|-4154|样品名称|1516625533082 169|iqmC.3aHMBGbl|ok|1516625084498|50|-4214|样品名称|1516625533108 170|iqmC.3aHMBGbl|ok|1516625084498|50|-4274|样品名称|1516625533414 171|iqmC.3aHMBGbl|ok|1516625084498|50|-4334|样品名称|1516625533160 172|iqmC.3aHMBGbl|ok|1516625084498|50|-4394|样品名称|1516625533680 173|iqmC.3aHMBGbl|ok|1516625084498|50|-4420|样品名称|1516625533068 174|iqmC.3aHMBGbl|ok|1516625084498|50|-4428|样品名称|1516625533482 175|iqmC.3aHMBGbl|ok|1516625084498|50|-4483|样品名称|1516625533155 176|iqmC.3aHMBGbl|ok|1516625084498|50|-4543|样品名称|1516625533148 177|TFbintkHMBw4H|ok|1516630122485|50|2526|样品名称|1516632672019 178|TFbintkHMBw4H|ok|1516630122485|50|2520|样品名称|1516632671903 179|TFbintkHMBw4H|ok|1516630122485|50|2460|样品名称|1516632672321 180|TFbintkHMBw4H|ok|1516630122485|50|2344|样品名称|1516632672859 181|TFbintkHMBw4H|ok|1516630122485|50|2336|样品名称|1516632671939 182|TFbintkHMBw4H|ok|1516630122485|50|2281|样品名称|1516632672802 183|TFbintkHMBw4H|ok|1516630122485|50|2220|样品名称|1516632671828 184|TFbintkHMBw4H|ok|1516630122485|50|2161|样品名称|1516632672625
我正在尝试对它提出一个查询,它会给我两个最新的(基于自动增量 _id)、calc_eta 值之间的差异对于每个不同的 token 值。
所以在这种情况下,结果应该是:
iqmC.3aHMBGbl|-7
TFbintkHMBw4H|797
我在 SQL 方面已经做到了这一点,但它目前没有为每个不同的令牌提供计算值,我不知道如何更进一步。
SELECT DISTINCT token,
(SELECT calc_eta
FROM DATA s
WHERE
(SELECT count(*)
FROM DATA f
WHERE f.token = s.token
AND f._id >= s._id) <= 1) -
(SELECT calc_eta
FROM
(SELECT calc_eta,
MIN(_id)
FROM DATA s
WHERE
(SELECT count(*)
FROM DATA f
WHERE f.token = s.token
AND f._id >= s._id) <= 2)) AS delay
FROM DATA;
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
标签: sql sqlite select distinct calculated-columns