SQLite - 计算数字列值的增加百分比
SQLite - calculate percentage increase in values of a numeric column
我想知道一列中的值相对于前一个值的增减百分比。
有人可以告诉我应该怎么做吗?
谢谢
这就是我的 table 的样子
week | sales |
22 | 11 |
21 | 63 |
20 | 78 |
19 | 170 |
18 | 130 |
这就是我想要的
week | sales | growth
22 | 11 | -82.5
21 | 63 | -19.2
20 | 78 | -54.12
19 | 170 | 30.8
18 | 130 | NULL
如果您想按百分比计算两个数字之间的差异。你可以试试这个公式。
例如
(@newSales - @oldSales) / ((@newSales + @oldSales) / 2) * 100
你的情况:
SELECT (@sales - @week) / ((@sales + @week) / 2) * 100 AS growth
使用LAG()
window函数获取每周sales
的前值:
SELECT *,
ROUND(100.0 * (1.0 * sales / LAG(sales) OVER (ORDER BY week) - 1), 1) growth
FROM tablename
ORDER BY week DESC;
参见demo。
我想知道一列中的值相对于前一个值的增减百分比。
有人可以告诉我应该怎么做吗?
谢谢
这就是我的 table 的样子
week | sales |
22 | 11 |
21 | 63 |
20 | 78 |
19 | 170 |
18 | 130 |
这就是我想要的
week | sales | growth
22 | 11 | -82.5
21 | 63 | -19.2
20 | 78 | -54.12
19 | 170 | 30.8
18 | 130 | NULL
如果您想按百分比计算两个数字之间的差异。你可以试试这个公式。 例如
(@newSales - @oldSales) / ((@newSales + @oldSales) / 2) * 100
你的情况:
SELECT (@sales - @week) / ((@sales + @week) / 2) * 100 AS growth
使用LAG()
window函数获取每周sales
的前值:
SELECT *,
ROUND(100.0 * (1.0 * sales / LAG(sales) OVER (ORDER BY week) - 1), 1) growth
FROM tablename
ORDER BY week DESC;
参见demo。