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

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

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

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

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

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

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

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

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

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


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

правда там у него вроде (шары мутные, плохо вижу) полные проводки дебет/кредит, а не движения (т.е. полупроводки) -- тогда надо это аккуратно учесть юнионом дебетов с кредитами. с учетом знаков.
...
Рейтинг: 0 / 0
31.10.2016, 12:50
    #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
31.10.2016, 13:44
    #39337881
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите посчитать актуальные остатки остатки
Legushka,

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

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


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


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