Если вы используете Sqlite 3.25 или новее, объединения могут быть исключены, и это можно сделать очень просто, используя оконные функции:
SELECT name
, sales
, date
, sales / lag(sales, 1) OVER past_sales AS Year1_Growth
, sales / lag(sales, 2) OVER past_sales AS Year2_Growth
, sales / lag(sales, 3) OVER past_sales AS Year3_Growth
FROM sales
WINDOW past_sales AS (PARTITION BY name ORDER BY date)
ORDER BY name DESC, date;
дает
name sales date Year1_Growth Year2_Growth Year3_Growth
---------- ---------- ---------- ------------ ------------ ------------
Vent 75.998 2014-12-31 null null null
Vent 153.988 2015-12-31 2.0262112160 null null
Vent 180.678 2016-12-31 1.1733251941 2.3774046685 null
Vent 372.819 2017-12-31 2.0634443595 2.4210912538 4.9056422537
DBG 4046.0 2014-12-31 null null null
DBG 4454.0 2015-12-31 1.1008403361 null null
DBG 4238.0 2016-12-31 0.9515042658 1.0474542758 null
DBG 4371.0 2017-12-31 1.0313827277 0.9813650651 1.0803262481
Редактировать:Дамп схемы таблицы данных и данных:
CREATE TABLE sales(name TEXT, sales REAL, date TEXT);
INSERT INTO sales VALUES('Vent',75.99800000000000466,'2014-12-31');
INSERT INTO sales VALUES('Vent',153.98799999999999954,'2015-12-31');
INSERT INTO sales VALUES('Vent',180.67799999999999727,'2016-12-31');
INSERT INTO sales VALUES('Vent',372.81900000000001683,'2017-12-31');
INSERT INTO sales VALUES('DBG',4046.0,'2014-12-31');
INSERT INTO sales VALUES('DBG',4453.9999999999999999,'2015-12-31');
INSERT INTO sales VALUES('DBG',4238.0000000000000001,'2016-12-31');
INSERT INTO sales VALUES('DBG',4370.9999999999999999,'2017-12-31');