Получить вычитание сделано через MySQL - PullRequest
0 голосов
/ 16 октября 2018

У меня есть упомянутая ниже таблица с именем myData1

ID   Value
1     150
2     120
3     100

Я могу получить последние два значения, используя запрос ниже:

SELECT value from myData1 order by ID desc limit 2;

Мне нужно получить сумму вычитания этих двух значений(в этом наборе результатов результат должен быть 100-120 ==> -20

Цените, если кто-то может помочь получить этот результат

1 Ответ

0 голосов
/ 16 октября 2018

Подход 1

Попробуйте ( DB Fiddle DEMO # 1 ):

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

  • Разбить на два разных выбранных запроса;Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...