MySQL:计算来自 Table 的数据,具有一个月的偏移量

MySQL: Calculating Data from Table with One Month Offset

我是 SQL 的新手,如果这是一个菜鸟问题,请原谅我。我正在构建一个存储过程,该过程从按月存储数据的 table 进行查询。这是 table 的简化示例:

+------------+------------+------------+
|    date    |  value_A   |  value_B   |
+------------+------------+------------+
| 2014-01-01 |    100     |    200     |
| 2014-02-01 |    200     |    400     |
| 2014-03-01 |    300     |    600     |
| 2014-04-01 |    400     |    800     |
| 2014-05-01 |    500     |    1000    |
| 2014-06-01 |    600     |    1200    |
| 2014-07-01 |    700     |    1400    |
|    ...     |    ...     |    ...     |
+------------+------------+------------+

在程序中,我需要计算:(Value_A / Value_B)。但是,Value_B需要滞后一个月。因此,在上面的示例中,2014 年 2 月的计算结果为:(Value_A of Feb 2014 / Value_B or Jan 2014) 或 (200 / 200)。 2014 年 3 月的计算结果为:(Value_A of Mar 2014 / Value_B of Feb 2014) 或 (300 / 400),依此类推。希望这是有道理的。

如果我只查询特定的月份,这不会太难,因为我可以在过程中使用 CASE 语句。但是因为我需要检索按月分组的一年的数据,所以我有点难过。

没有 Value_B 一个月的滞后,我将 SQL 语句设置为:

SELECT ex.`date `, ex.value_A / ex.value_B AS calc
  FROM example_table ex
 WHERE ex.`date` BETWEEN '2014-03-01' AND '2015-02-01'
GROUP BY ex.`date`

我不确定从这里到哪里去。我尝试过不同的加入和联合,但没有任何运气。我是否需要分别查询 Value_A 和 Value_B 以及它们自己的日期范围,然后以某种方式将它们合并在一起进行计算?还是我让它变得比实际更难?

感谢您的帮助。

SELECT t.date, t.value_A/t2.value_B AS calc
FROM table t JOIN table t2 ON t.date = DATE_ADD(t2.date, INTERVAL 1 MONTH)

我希望这对我有所帮助,我认为我正确地阅读了你的问题...

SELECT ex.`date`, ex.value_A / ex2.value_B as calc
FROM test ex
LEFT JOIN test ex2 
    ON DATE_ADD(ex.`date`, INTERVAL 1 MONTH) = ex2.`date`
WHERE ex.`date` BETWEEN '2014-03-01' AND '2015-02-01'
GROUP BY ex.`date`