我的PostgreSQL数据库中有一个表格,其中包含从1995年到2015年(差距为5年)销售的车辆数量的数据,如下所示:
ID. veh_1995 veh_2000 veh_2005 veh_2010 veh_2015
1 200 425 526 725 623
2 400 478 1000 1500 2000
3 150 300 400 700 1100
4 700 800 1000 2000 5000
5 900 1500 1600 2000 2500
我想以编程方式插入缺失年份和所有ID的值,以便我从1995年到2015年拥有已售出车辆的记录数量。有人可以建议我怎么做吗? This question显示了两个值之间的插值,this link显示了psql
方法的插值。但是,我正在寻找PostgreSQL Select查询解决方案,我不想去存储过程或基于psql的方法。我在基于Windows 7的机器上使用PostgreSQL 9.5版。
答案 0 :(得分:2)
由于插值很简单(您事先知道插值点在年份维度上的位置),因此查询非常简单:
SELECT id,
veh_1995,
(veh_1995 + (veh_2000 - veh_1995) * 0.2)::int AS veh_1996,
(veh_1995 + (veh_2000 - veh_1995) * 0.4)::int AS veh_1997,
(veh_1995 + (veh_2000 - veh_1995) * 0.6)::int AS veh_1998,
(veh_1995 + (veh_2000 - veh_1995) * 0.8)::int AS veh_1999,
veh_2000,
... -- add similar lines to interpolate other years
veh_2015
FROM my_table;