Сложение суммы заработной платы с ежегодным увеличением заработной платы за один запрос - SQL PostgreSQL - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть базовая таблица с подробным описанием сотрудников и годовой заработной платы.

Я хочу рассчитать общую стоимость для бизнеса за 3 года заработной платы, но с ежегодным повышением заработной платы на 3%, начиная сповышение заработной платы сегодня и заканчивается через 3 года.

Таким образом, метод должен стоить (SUM of SALARY * 1.03) + (THAT TOTAL * 1.03) + (THIRD TOTAL * 1.03) = 3 год с учетом ежегодного повышения заработной платы.

Я попытался сделать следующее (у означает год):

SELECT ((SUM("salary")  * 1.03 AS "y2") + ("y2" * 1.03 AS "y3"), + ("y3" * 1.03)) AS "totalCost" 
FROM public."groundStaff";

Со следующей ошибкой:

ERROR:  syntax error at or near "AS"
LINE 1: SELECT ((SUM("salary")  * 1.05 AS "s2") + ("s2" * 1.05 AS "s...
                                       ^
SQL state: 42601
Character: 32

Я также пытался переместить скобки, но безрезультатно.

Большое спасибо!

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете сделать:

select sum(salary) as year_0,
       sum(salary) * 1.03 as year_1,
       sum(salary) * 1.03 * 1.03 as year_2,
       sum(salary) * 1.03 * 1.03 * 1.03 as year_3
from public."groundStaff";

Или, если хотите много лет, и вы можете поместить их в отдельные строки:

select gs.y,
       sum(salary) * power(1.03, gs.y) as salary
from public."groundStaff" cross join
     generate_series(0, 3) as gs(y)
group by gs.y    
order by gs.y;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...