Пожалуйста, проведите код ревью, норм, не норм?
Если кратко — главное чтобы работало, в вашем случае. 

Если чуть развёрнуто:

Функция в функции плохо. Выносите. 
Весь код в контроллере тоже плохо. Выносите в калькуляторы, сервисы, репозитории.
Используйте camelCase в переменных.
Посмотрите в документации как правильно получать через консоль пользовательские данные (input)
Некоторые комментарии излишние и некоторые названия не логичны. Уберите лишние комментарии и поработайте над неймингом.

Это основные моменты. Тут стоит опираться не на код, а на Ваши знания. Вам не хватает знаний и стоит погрузиться в тему рефакторинга, ООП, чистый код и т.д. 

Ваш код — результат Ваших знаний. 
Соглашусь с Максимом и от себя добавлю, что при сложных выборках с использованием агрегирующих функций типа суммирования и т.п. стоит рассмотреть вариант с денормализацией данных для ускорения и упрощения подсчетов. Т.е. создать копию данных со структурой при которой подсчет будет проще и быстрее.

Описание метода денормализации данных