powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите посчитать актуальные остатки остатки
10 сообщений из 10, страница 1 из 1
Помогите посчитать актуальные остатки остатки
    #39337296
dem59
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день помогите разобраться с остатками
История изменения хранится в одной таблице. В таблице есть Кто отдал\Кто принял
Для примера:

есть 10 яблок = числятся за сотрудником. Далее 4 яблока ушли к другому сотруднику. Итого получаю что за первым числится 6 яблок за 2 числится 4 яблока. Далее второй сотрудник отдает неиспользованное яблоко обратно первому сотруднику. и так можно делать n число раз.

Помогите написать запрос по получению актуальных остатков по каждому сотруднику
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337365
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dem59,

Требуется:
DDL для создания рабочих таблиц (или одной)

набор данных для примера

ожидаемый результат для этих данных

ваши собственные наработки.
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337366
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dem59,

история в одной таблице, а начальные 10 как представлены?
в общем, sum(unpivot union остаток)
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337367
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.,

не union остаток, а начаток. вместо юнион, если начаток задается костантой, можно просто условно добавить.
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337436
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.p2.,

не union остаток, а начаток. вместо юнион, если начаток задается костантой, можно просто условно добавить.
если всё кака бычна, то начальные остатки -- просто первая запись (по группе) в той же таблице движений, максимум -- выделенная статусом или абсолютно прошлым временем. т.ч. за всё про всё достаточно всего--то группировки. а для скользящих остатков -- окна.


послать студента изучать групп бай -- достаточно
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337438
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

правда там у него вроде (шары мутные, плохо вижу) полные проводки дебет/кредит, а не движения (т.е. полупроводки) -- тогда надо это аккуратно учесть юнионом дебетов с кредитами. с учетом знаков.
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337803
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вам остатки лучше организовать в таком виде, иначе потом будут большие тормоза, когда у вас записей наберется на несколько лет

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

смысл такой что когда вы одному сотруднику даете 10 яблок, не важно в какой период времени, вы в таблицу остатков
делаете update текущее_количество = текущее_количество + 10 where сотрудник = 'первый'
в таблицу движения insert записи:
Дата, Сотрудник, Приход_Расход
'2016-10-01', 'первый', 10

если от первого передаете второму 4 яблока то в таком случае
остатки:
update текущее_количество = текущее_количество - 4 where сотрудник = 'первый'
update текущее_количество = текущее_количество + 4 where сотрудник = 'второй'

(апдейт или инсерт определяете сами, есть ли записи или нет)
insert движение (Дата, Сотрудник, ИД документа сделавшего движение, Приход_Расход)
values ('2016-10-31', 'первый', 123, -4), ('2016-10-31', 'второй', 123, 4)

по ИД документа видно что это одна операция

таким образом, что бы расчитать остаток на определенную дату вы из реального остатка вычитаете весь приход, и прибавляете весь расход (грубо говоря ОСТАТОК - ПРИХОД_РАСХОД) за период [дата на начало которой вы смотрите остаток; по бесконечность).

будет быстро работать для выяснения остатков за последние периоды, что бы узнать остаток допустим на начало 2013 года, будет слишком много расчетов, поэтому можно организовать еще контрольные точки для хранения промежуточных остатков (эти промежуточные остатки пересчитывать только в том случае если было движение до этих контрольных точек).
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39337881
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

Чёт прям классическая схема банковских счетов, со счетами, проводками и закрытием дня ;)
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39338047
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,
использовал ранее в сальдово оборотных ведомостях когда работал с бух/складским/товарным учетом.
...
Рейтинг: 0 / 0
Помогите посчитать актуальные остатки остатки
    #39338182
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkaвам остатки лучше организовать в таком виде, иначе потом будут большие тормоза, когда у вас записей наберется на несколько лет
>>>блабла бла
.
это вообще то спорный момент. упирается в объёмы движений и частоту срезов остатков.
легко можно зафигачить таблицу остатков более объёмную, чем саму таблицу движений. и тягать её как чемодан без ручки, при вполне небольших для прямой агрегации объёмах движения.

ну и при наличии движений, обнаруживаемых задним числом (что иногда в природе случается, и часто -- чаще чем хотелось бы), пересчитывать все остатки от начала эры -- не самое приятное занятие. тормозящее всё колом. (таки тянет на апдейт всей таблицы одной транзакцией)


а самое смешное -- ТС о том, как лучше ему что-то там организовать не спрашивал. он спрашивал как обсчитать таблицу движений, устроенных как двойная булгактерская запись.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите посчитать актуальные остатки остатки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]