簡體   English   中英

如何找到Mysql中最后兩個條目之間的差異

[英]how to find the difference between last two entries in Mysql

我需要一個關於 MySQL 中最后兩個條目差異之間的差異的解決方案

SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date,
       SUM(order_total_after_tax) as number
FROM tbl_order 
WHERE status = 'Confirmed'
GROUP BY DATE_FORMAT(order_datetime,'%Y/%m')
Limit 2

輸出 :

date     number
02/2019 2345.01
03/2019 103751.05

但我需要一個確切的解決方案是我需要找到最后兩個結果之間的差異

2345.01 -103751.05

結果: -101406.04在 MySQL 中如何做 Query 是什么?

你可以試試交叉連接

select   a.date, a.number, b.number, a.number - b.number my_diff
from (

  SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date
    , SUM(order_total_after_tax) as number 
  FROM tbl_order 
  where status='Confirmed' 
  GROUP BY DATE_FORMAT(order_datetime,'%Y/%m') 
  Limit 2
)  a 
CROSS JOIN (
  SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date
    , SUM(order_total_after_tax) as number 
  FROM tbl_order 
  where status='Confirmed' 
 GROUP BY DATE_FORMAT(order_datetime,'%Y/%m') 
) b ON a.date = b.date and a.number <> b.number

一種方法是cross join ,但它看起來像這樣:

SELECT last.number - last_1.number
FROM (SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date,
             SUM(order_total_after_tax) as number
      FROM tbl_order 
      WHERE status = 'Confirmed'
      GROUP BY DATE_FORMAT(order_datetime,'%Y/%m')
      ORDER BY date
      LIMIT 1
     ) as last CROSS JOIN
     (SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date,
             SUM(order_total_after_tax) as number
      FROM tbl_order 
      WHERE status = 'Confirmed'
      GROUP BY DATE_FORMAT(order_datetime,'%Y/%m')
      ORDER BY date
      LIMIT 1 OFFSET 1
     ) last_1
SELECT last.number - last_1.number FROM (SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date, SUM(order_total_after_tax) as number FROM tbl_order WHERE status = 'Confirmed' GROUP BY DATE_FORMAT(order_datetime,'%Y/%m') ORDER BY date DESC LIMIT 1 ) as last CROSS JOIN (SELECT DATE_FORMAT(order_datetime,'%m/%Y') as date, SUM(order_total_after_tax) as number FROM tbl_order WHERE status = 'Confirmed' GROUP BY DATE_FORMAT(order_datetime,'%Y/%m') ORDER BY date DESC LIMIT 1 OFFSET 1 ) last_1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM