mysql - 逐月增长(同一列)
问题描述
我查看了其他解决方案,但似乎没有一个对我有用。我有一个非常简单的问题。
我有一个名为止赎的表。它有 3 列名为:foreclosures_id、period、foreclosures。句点是唯一的主键。止赎列的数据类型是十进制。
我当前的查询是:SELECT MONTHNAME(period) AS Reported_Month, YEAR(period) AS Reported_Year, FORMAT(foreclosures, 0) AS Foreclosures,
(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;
我正在尝试生成以下“增长”列。请帮忙?
+----------------+---------------+--------------+------------+
| Reported_Month | Reported_Year | Foreclosures | Growth % |
+----------------+---------------+--------------+------------+
| January | 2016 | 201 | |
| February | 2016 | 332 | 65.2% |
| March | 2016 | 240 | -27.7% |
| April | 2016 | 369 | 53.8% |
+----------------+---------------+--------------+------------+
解决方案
您可以使用与累积总和类似的逻辑来获取上一期间的止赎:
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;
对于增长度量,只需应用您将用于该计算的算术。
推荐阅读
- wordpress - Wordpress - 响应式图像 - 删除大小
- serenity-bdd - Serenity:如何根据使用的平台区分报告?
- javascript - 使用 chrome 扩展名更改 url 建议列表
- javascript - 有没有办法让花在活动上的总时间总是 24 小时
- azure-devops - Azure devops 管道在构建之间获取工作项
- c - 获取 C 代码中 Lua 中加载的变量列表
- iis - IIS 10 中的 IP 地址和域限制问题
- node.js - 如何使用云功能更新收藏?
- docker - Docker 使用静态 html 文件运行容器
- apache - 如何仅禁用 webP 优化