Mysql 逐月增长(同一列)

Mysql 逐月增长(同一列),mysql,sql,Mysql,Sql,我已经研究过我的其他解决方案,但似乎没有一个适合我。我有一个非常简单的问题 我有一张名为止赎的桌子。它有三列,分别命名为:止赎id、期间、止赎。句点是唯一的主键。止赎列的数据类型为十进制 我目前的查询是: 选择 每月报告的期间(每月), 年度报告的年度期间, 格式止赎,0为止赎 (SELECT FORMAT(SUM(f2.foreclosures),0) FROM foreclosures f2 WHERE f2.period <= f1.period AND f1.foreclosure

我已经研究过我的其他解决方案,但似乎没有一个适合我。我有一个非常简单的问题

我有一张名为止赎的桌子。它有三列,分别命名为:止赎id、期间、止赎。句点是唯一的主键。止赎列的数据类型为十进制

我目前的查询是: 选择 每月报告的期间(每月), 年度报告的年度期间, 格式止赎,0为止赎

(SELECT FORMAT(SUM(f2.foreclosures),0) FROM foreclosures f2
WHERE f2.period <= f1.period AND f1.foreclosures IS NOT NULL)  
AS YTD_Total,

MONTHNAME(DATE_SUB(period, INTERVAL 2 MONTH))  AS Real_Month,
YEAR(DATE_SUB(period, INTERVAL 2 MONTH))  AS Real_Year

FROM foreclosures f1;

您可以使用与累计金额类似的逻辑来获得前一时期的止赎:

SELECT MONTHNAME(period) AS Reported_Month,
       YEAR(period) AS Reported_Year,
       FORMAT(foreclosures, 0) AS Foreclosures,
       (SELECT f2.foreclosures
        FROM foreclosures AS f2
        WHERE f2.period < f.period AND
              f.foreclosures IS NOT NULL
        ORDER BY f2.period DESC
       ) as prev_foreclosures
FROM foreclosures f;

对于增长度量,只需应用您将用于该计算的算法。

我找到了一种方法,您的代码是朝着正确方向迈出的非常有帮助的一步。谢谢大家!@阿莱西奥坎塔雷拉。您对我的代码所做的更改并没有改进格式。您可以阅读我在《使用SQL和Excel进行数据分析》第1章中关于编写SQL代码的指南。我完全按照我希望的方式格式化代码。
SELECT MONTHNAME(period) AS Reported_Month,
       YEAR(period) AS Reported_Year,
       FORMAT(foreclosures, 0) AS Foreclosures,
       (SELECT f2.foreclosures
        FROM foreclosures AS f2
        WHERE f2.period < f.period AND
              f.foreclosures IS NOT NULL
        ORDER BY f2.period DESC
       ) as prev_foreclosures
FROM foreclosures f;