求如何用mysql实现计算上下两条记录的差

Fid Fnum
9323 10
9309 10
9308 10
9261 10
9230 10
9207 10
9191 10
9165 10
9151 10
...
我现在有这样的一张表,Fid是按降序排列的,Fnum的值是固定值为10,我想用mysql语句求出Fid字段上下两个数的差值,最终实现结果如下:

14
1
47
31
23
16
...
请教大家如何用mysql实现

求如何用mysql实现计算上下两条记录的差的方法。

如下参考:

1.创建一个表并插入数据,如下图所示。

2.按字段名顺序从表名中选择*,如下图。

3.根据班级分组程度(groupby),将数据分为三类:肉类、蔬菜和水果。

4.按类分组后,对结果进行处理,分别计算三个类的总金额。在本例中,sum是mysql提供的一个内置函数(聚合函数),它是统计组合的。

5.分组之后,可以使用聚合函数执行一系列查询操作,询问每个类中有多少个查询操作。

6.组后面跟着过滤器,如下所示。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
方法挺多的,很多是采用排序直接对等连接,这样对于主键聚集索引比较快的。
----
我提供的不是排序对等 方式,而是大范围连接检索最小距离的方式。

SELECT
A.FID,A.Fnum,MIN(A.Fid-B.Fid) as 差值
FROM test.cte A
INNER JOIN test.cte B on(A.FID>B.FID)
GROUP BY A.FID,A.Fnum
ORDER BY A.Fid Desc

---
执行结果:
FID Fnum 差值
-------------------------
'9323', '10', '14'
'9309', '10', '1'
'9308', '10', '47'
'9261', '10', '31'
'9230', '10', '23'
'9207', '10', '16'
'9191', '10', '26'
'9165', '10', '14'追问

很感谢你的回答,比我想的要简单有效的多,我直接说出我最开始的目的吧,也希望你的帮助:
Fid Fnum
1510 10
1511 10
1512 18
1513 18
1514 13
1515 12
1516 19
1517 11
1518 14
1519 4

这是最初的表中的一部分数据,我想实现三个功能,第一个是查询出Fnum中每一个数会连续出现几次,比如10,18这两个数连续出现了2次.

本回答被提问者采纳
相似回答