我有一个包含库存数据的 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/