SELECT dt.last_value - dt.second_last_value
FROM
(
SELECT
t1.Value as last_value,
(SELECT t2.Value
FROM myData1 AS t2
WHERE t2.ID < t1.ID
ORDER BY t2.ID DESC LIMIT 1) AS second_last_value
FROM myData1 AS t1
ORDER BY t1.ID DESC LIMIT 1
) AS dt
方法2
分成两个不同的select查询;使用 Limit 与 Offset . 对于最后一项,使用系数1。对于倒数第二个,使用因子-1。 使用组合这些结果 UNION ALL 到派生表中。 最后,使用各自的因子对值求和。 您可以执行以下操作(db fiddle demo#2):
SELECT SUM(dt.factor * dt.Value)
FROM
(
(SELECT Value, 1 AS factor
FROM myData1
ORDER BY ID DESC LIMIT 0,1)
UNION ALL
(SELECT Value, -1 AS factor
FROM myData1
ORDER BY ID DESC LIMIT 1,1)
) AS dt
1条答案
按热度按时间2uluyalo1#
方法1
使用相关子查询将第一个和最后第二个值作为两个独立的列获取。
然后可以将结果集用作派生表来计算差异。
尝试(db小提琴演示#1):
方法2
分成两个不同的select查询;使用
Limit
与Offset
. 对于最后一项,使用系数1。对于倒数第二个,使用因子-1。使用组合这些结果
UNION ALL
到派生表中。最后,使用各自的因子对值求和。
您可以执行以下操作(db fiddle demo#2):