在SQL中为表新增行时如何通过列名执行数学运算计算年增长率
SQL插入年度百分比增长率行解决方案
计算逻辑
年度同比增长率计算公式为:(当年数值 - 上年数值) / 上年数值 * 100%,对应你提供的样例数据:
- 2001年无前置年份数据,增长率留空/填NULL
- 2002年增长率:(313-125)/125*100 = 150.4%
- 2003年增长率:(515-313)/313*100 ≈ 64.54%
实现代码
假设你的表名为yearly_stats,可直接使用以下INSERT语句插入新行:
INSERT INTO yearly_stats (`2001`, `2002`, `2003`) SELECT NULL AS `2001`, ROUND((`2002` - `2001`)/`2001` * 100, 2) AS `2002`, ROUND((`2003` - `2002`)/`2002` * 100, 2) AS `2003` FROM yearly_stats LIMIT 1;
注意事项
- 数字开头的列名需要用反引号`包裹,避免SQL语法报错
- 代码中
ROUND(xxx,2)表示保留2位小数,可根据需求调整保留位数 - 如果你的表有用于标识行类型的字段(比如
indicator区分是原始数值还是增长率),建议在插入时补充标识,避免后续数据混淆,示例如下:
INSERT INTO yearly_stats (indicator, `2001`, `2002`, `2003`) SELECT '年度同比增长率(%)' AS indicator, NULL AS `2001`, ROUND((`2002` - `2001`)/`2001` * 100, 2) AS `2002`, ROUND((`2003` - `2002`)/`2002` * 100, 2) AS `2003` FROM yearly_stats WHERE indicator = '原始数值' LIMIT 1;
内容的提问来源于stack exchange,提问作者Osman Büyükyılmaz
相关产品推荐
相关产品推荐

