Запрос SQL, который будет возвращать доходы нарастающим итогом?

Ссылка скопирована
12 февраля 2026 1 ответ

Пожалуйста, помогите, написать запрос, который будет возвращать доходы сотрудников за
год нарастающим итогом в следующем порядке столбцов: EMP_NAME; DEP_NAME; POSITION; PERIOD; RUNNING_SUM (нарастающий итог)

DEPARTMENT (название таблицы)
DEP_ID (PK) DEP_NAME (Not null, unique)
1; Бухгалтерия
2; HR
3; Продажи

EMPLOYER (название таблицы)
EMP_ID; DEP_ID; EMP_NAME; POSITION
1; Добрынин Дмитрий Данилович Директор
2; 1 ; Абрамова Анна Анатольевна Главный бухгалтер
3; 1 ; Богданов Борис Бедросович Бухгалтер
4; 2; Воробьева Вера Викторовна Начальник отдела
5 ; 3; Гаврилова Галина Георгиевна Главный специалист
6 ; 3; Ежов Евгений Егорович Специалист
7 ; 3; Иванов Игорь Ильич Специалист

SALARY (название таблицы)
EMP_ID; PERIOD; AMOUNT
1; 201901; 1000
1; 201902 ; 1300
1 ; 201903 ; 1200
1; 201904 ; 1000
1; 201905; 700
1; 201906 ; 1800
1 ; 201907 ; 1100

Дополнительно:

SUM(..) OVER (.. ORDER BY ..)

  • Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </>
    Это обязательно, см.п.3.8 Регламента.
    Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Дмитрий К. Ответ

    Для того чтобы написать SQL запрос, который будет возвращать доходы нарастающим итогом, мы можем воспользоваться оконной функцией SUM() и функцией накопления (cumulative sum).

    Пример запроса SQL для этой задачи может выглядеть следующим образом для таблицы с названием "income" и полями "id" и "amount":

    SELECT 
        id,
        amount,
        SUM(amount) OVER (ORDER BY id) AS cumulative_income
    FROM 
        income;

    SELECT id, amount, SUM(amount) OVER (ORDER BY id) AS cumulative_income FROM income;

    В данном запросе мы выбираем id и amount из таблицы income, а также используем оконную функцию SUM() для вычисления накопленной суммы доходов (cumulative income) по полю amount, упорядочивая результаты по id.

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

    Надеюсь, что данная информация поможет вам решить задачу по вычислению доходов нарастающим итогом с использованием SQL запроса. Если у вас возникнут дополнительные вопросы или потребуется дополнительная помощь, не стесняйтесь обращаться!

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно