mysql - 比较最后两行值

标签 mysql sql

我有一个包含库存数据的 mysql 表,每个季度我都会添加一行包含最后收集的值。

今天:

+--------------+-------------------+
| Quarter      | Value             |
+--------------+-------------------+
|2012.Q4       |17000              |
|2013.Q1       |18000              |
|2013.Q2       |19000              |x
|2013.Q3       |26600              |x
+--------------+-------------------+

下个季度,我会得到

+--------------+-------------------+
| Quarter      | Value             |
+--------------+-------------------+
|2012.Q4       |17000              |
|2013.Q1       |18000              |
|2013.Q2       |19000              |
|2013.Q3       |26600              |x
|2014.Q1       |20000              |x
+--------------+-------------------+

我需要计算每个季度最后两行之间的差异、值和百分比

  • 今天,预期结果为 +7600 (+40%)(四舍五入)
  • 下一季度的预期结果为 -6600 (-25%)(四舍五入)

提前谢谢您。

最佳答案

你可以试试这个方法

SELECT SUM(CASE WHEN rnum = 2 THEN -1 * value ELSE value END) diff_value,
       ROUND(SUM(CASE WHEN rnum = 2 THEN -1 * value ELSE value END) /
             SUM(CASE WHEN rnum = 1 THEN 0 ELSE value END) * 100) diff_percent
  FROM
(
  SELECT quarter, value, @n := @n + 1 rnum
    FROM table1 CROSS JOIN (SELECT @n := 0) i
   ORDER BY quarter DESC
   LIMIT 2
) q

这里是SQLFiddle 演示(当前季度) 输出:

| DIFF_VALUE | DIFF_PERCENT |
|------------|--------------|
|       7600 |           40 |

这里是SQLFiddle 演示(下季度) 输出:

| DIFF_VALUE | DIFF_PERCENT |
|------------|--------------|
|      -6600 |          -25 |

关于mysql - 比较最后两行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678754/

相关文章:

mysql - 使用parent_id或child_id : Mysql选择整个团队

php - 搜索多个单词 PHP

新闻存档的 PHP/MYSQL 年月表

php - 如何复制数据库记录并跟踪其新 ID

sql - MySQL限制和偏移错误

php - 我如何解决此错误 :SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '30' for key 'PRIMARY'

SQL Server 日期时间格式

php - 记录在查看页面上出现两次

mysql - 在 mysql 中使用 group by 的平均值

android - MySQL转离线数据库android