|
|
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Доброе утро всем. Пусть есть таблица (Table1), которая содержит: A (приход), B(расход) и дату. Есть таблица (Table2), которая содержит номер человека - id и его имя - Name. Необходимо найти среднемесячный остаток по таблице Table1 для определенного человека из Table2. Note: Сначала получение остатков за каждый календарный день для каждого человека, затем получение среднего. Вопрос: в коде я делю на 31 день (например, март), но по сути, не каждый ведь день может быть оборот. Как исключать такие дни? Подсказали сделать подзапрос в From, но дальше я не могу понять что делать с этим Temp, и как произвести выборку. Подскажите, опытные. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 10:39 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Cursor777 Вопрос: в коде я делю на 31 день (например, март), но по сути, не каждый ведь день может быть оборот. Как исключать такие дни? Зачем исключать? Надо на каждый день посчитать остаток, сложить и разделить. Иначе правильной цифры не получишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 10:48 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
982183, возможно не так условие понял. Не подскажите дальнейшие действия исходя из кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 10:57 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
982183Cursor777 Вопрос: в коде я делю на 31 день (например, март), но по сути, не каждый ведь день может быть оборот. Как исключать такие дни? Зачем исключать? Надо на каждый день посчитать остаток, сложить и разделить. И наче правильной цифры не получишь . получить, но чуть посложнее ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 11:52 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Cursor777 Note: Сначала получение остатков за каждый календарный день для каждого человека, затем получение среднего. двигайтесь последовательно,сначала получите остатки можно за каждый день (так проще), можно за период когда был оборт (чуть сложнее) зы как-то странно у Вас Приход уменьшает остаток и наоборот зыы страноватое вычисление ( SELECT MAX(LEVEL) AS Count_Days FROM dual START WITH :p_BegDate <= :p_EndDate CONNECT BY :p_BegDate + rownum <= :p_EndDate ) AS Balance гляньте на :p_EndDate-:p_BegDate +1 ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:02 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Staxполучить, но чуть посложнее ПРАВИЛЬНОЙ не получить. Ситуация: 1-го числа прошло 100шт. 31-го числа продано 100 шт. Вариант1 (100+0)/2=50 Вариант1 (100*30+0)/31=96,77 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:13 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Staxгляньте на :p_EndDate-:p_BegDate +1 Выводит 29 дней в марте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:18 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Staxзы как-то странно у Вас Приход уменьшает остаток и наоборот зыы страноватое вычисление ( SELECT MAX(LEVEL) AS Count_Days FROM dual START WITH :p_BegDate <= :p_EndDate CONNECT BY :p_BegDate + rownum <= :p_EndDate ) AS Balance гляньте на :p_EndDate-:p_BegDate +1 ..... stax Это просто вычисление количества дней в месяце, беру максимальную дату, т.е 31 день - это и будет делимым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:21 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
982183Staxполучить, но чуть посложнее ПРАВИЛЬНОЙ не получить. Ситуация: 1-го числа прошло 100шт. 31-го числа продано 100 шт. Вариант1 (100+0)/2=50 Вариант1 (100*30+0)/31=96,77 счітаем 1) что до 1-го оборота не было 2) остаток на конец дня тогда среднее среднее (100*30+0*1)/31 если я провавильно понимаю "среднемесячный остаток" ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:32 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Cursor777Это просто вычисление количества дней в месяце, беру максимальную дату, т.е 31 день - это и будет делимым. Cursor777Staxгляньте на :p_EndDate-:p_BegDate +1 Выводит 29 дней в марте. 31/03/18-01/03/18+1=31дней ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 12:35 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
[/quot] двигайтесь последовательно,сначала получите остатки можно за каждый день (так проще), можно за период когда был оборт (чуть сложнее) [/quot] Вывел как Вы и сказали за каждый день. В итоге значение меняется только 14, 22 и 27 числа. Как дальше с этим быть? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 13:55 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Cursor777 двигайтесь последовательно,сначала получите остатки можно за каждый день (так проще), можно за период когда был оборт (чуть сложнее) [/quot] SELECT -P_SALDO.GETSALDO('1', '01/04/2018') SALDO FROM DUAL; --была ошибочка с id [/src][/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 13:56 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Cursor777, я не умею использовать/создавать функции (GETSALDO) в кляузе with поетому придется создавать таблички что займет чутку времени счас нарисую ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 14:39 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Stax, эта функция аналог: Код: plsql 1. 2. 3. 4. 5. Просто для сокращения места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 14:53 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Cursor777, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ето иногда не оптимально (искать сальдо на каждый день), но для лабы за месяц пойдет ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 15:01 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Stax, Большое Вам спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 15:31 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Stax982183пропущено... ПРАВИЛЬНОЙ не получить. Ситуация: 1-го числа прошло 100шт. 31-го числа продано 100 шт. Вариант1 (100+0)/2=50 Вариант1 (100*30+0)/31=96,77 счітаем 1) что до 1-го оборота не было 2) остаток на конец дня тогда среднее среднее (100*30+0*1)/31 если я провавильно понимаю "среднемесячный остаток" ..... stax Странное у вас понимание "среднемесячного остатка" Есть складские запасы, и им безразлично есть товар или нет, есть движение или нет. Нет товара - остаток ноль, нет движения - остатки от этого не меняются. Соответственно в примере с 1 по 30 остатки были 100шт. 31-го - ноль. Соответственно "средние остатки" (100*30+0)/31=96,77 и никак по другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 04:24 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Для оптимальности товародвижения и складских запасов важны метрики "средняя реализация за период" (при ее отсутствии - "срок залежалости"), "кол-во дней периода, когда остаток был 0" и прочие кручения-верчения на тему "как бы продать побольше". А это просто задачка, готовящая студент к общению с бухгалтерией и маркетингом :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:32 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
982183Staxпропущено... счітаем 1) что до 1-го оборота не было 2) остаток на конец дня тогда среднее среднее (100*30+0*1)/31 если я провавильно понимаю "среднемесячный остаток" ..... stax Странное у вас понимание "среднемесячного остатка" Есть складские запасы, и им безразлично есть товар или нет, есть движение или нет. Нет товара - остаток ноль, нет движения - остатки от этого не меняются. Соответственно в примере с 1 по 30 остатки были 100шт. 31-го - ноль. Соответственно "средние остатки" (100*30+0)/31=96,77 и никак по другому. а я как посчитал? 21449768 насчет по другому, отвечал на 21449262 982183Cursor777 Вопрос: в коде я делю на 31 день (например, март), но по сути, не каждый ведь день может быть оборот. Как исключать такие дни? Зачем исключать? Надо на каждый день посчитать остаток, сложить и разделить. Иначе правильной цифры не получишь. повторюсь, не обязательно (а часто излишне/затратно) считать остаток за/на каждый день вообще-то, зависит от бухов, напр выходные/праздники зы в системах (в тч склиды -бакалия,гсм,комплектующие ) с которыми я работал, остатки хранятся в отдельной табличке/mv , считаю ето правильным ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:52 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
dmdmdm, мож ето и не склад, напр счет ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:54 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Staxа я как посчитал? Сорри. увидел. Stax, напр выходные/праздники Да, есть такое дело, иногда просят нерабочие дни исключить. Staxостатки хранятся в отдельной табличке Ну так там наверное хранят текущие остатки, а не остатки на конец каждого дня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 09:27 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
982183Ну так там наверное хранят текущие остатки, а не остатки на конец каждого дня. когда был оборот (остаток, заодно и сумарные обороты) наверное можно и каждый день, зависит от обемов зы имхо по любому какие-то выверенные остатки надо хранить (на начало года,квартала, месяца, дня) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 09:52 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Stax982183Ну так там наверное хранят текущие остатки, а не остатки на конец каждого дня. когда был оборот (остаток, заодно и сумарные обороты) наверное можно и каждый день, зависит от обемов зы имхо по любому какие-то выверенные остатки надо хранить (на начало года,квартала, месяца, дня) ..... stax Если мы говорим про производственный учёт, то понятия "остатка" там нет, есть незавершённое производство. Учитывается наличие(например, после инвентаризации) (у вас оно хранится в таблице 2) на определённый момент времени. Можно посчитать среднемесячный остаток, как: 1. Дельта остатка(за день с начала месяца*) = сумма прихода* - сумма расхода 2. среднемесячный остаток = остаток на начало периода + среднее значение Дельты остатка Но это будет среднее по больнице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 11:56 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Staxкогда был оборот (остаток, заодно и сумарные обороты) Обороты наверное лучше иметь где-то в OLAP кубе. Staxпо любому какие-то выверенные остатки надо хранить (на начало года,квартала, месяца, дня) а зачем? отчетность это вряд ли ускорит. Достоверность надо проверять. А "текущие" остатки несомненно крайне важны, дабы при реализации, при подборе товара их не высчитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 11:59 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
982183Staxкогда был оборот (остаток, заодно и сумарные обороты) Обороты наверное лучше иметь где-то в OLAP кубе. Staxпо любому какие-то выверенные остатки надо хранить (на начало года,квартала, месяца, дня) а зачем? отчетность это вряд ли ускорит. Достоверность надо проверять. А "текущие" остатки несомненно крайне важны, дабы при реализации, при подборе товара их не высчитывать. мож ето и куб, я в етом слабо разбираюсь для ускорения ети избыточные данные и хранятся отдельно, напр баланс на ... зы диасофтовцы расказывали байку, что в некотором ОДБ (не буду называть), остатки ВООБЩЕ не хранятся, всегда расчитываются я не верю ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 12:17 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
[quot Stax]982183пропущено... Обороты наверное лучше иметь где-то в OLAP кубе. пропущено... зы диасофтовцы расказывали байку, что в некотором ОДБ (не буду называть), остатки ВООБЩЕ не хранятся, всегда расчитываются я не верю ..... stax я охотно верю(для промежуточных данных(за сутки)). Либо хранить производственные остатки для отчётов, но их пересчитывать на каждый чих, либо считать на весу для каждого запуска отчёта. То на то и выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 12:31 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
[quot kernA]Staxпропущено... я охотно верю(для промежуточных данных(за сутки)). Либо хранить производственные остатки для отчётов, но их пересчитывать на каждый чих, либо считать на весу для каждого запуска отчёта. То на то и выходит. не понял, зачем пересчитывать? задним числом не работаем (за вчера учет в спецоперациях, которые если надо правят и остатки) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 12:43 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
[quot Stax]kernAпропущено... не понял, зачем пересчитывать? задним числом не работаем (за вчера учет в спецоперациях, которые если надо правят и остатки) ..... stax Как раз многие работают задним числом: 1. Могут забыть завести операцию 2. Могут ошибиться в вводе данных 3. Может поступить информация от клиентов/поставщиков за предыдущий период и тп. Если данные изменились за какой то день, то "оперативные" остатки должны автоматом пересчитаться от даты изменения до текущего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 13:09 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
[quot kernA]Staxпропущено... Как раз многие работают задним числом: 1. Могут забыть завести операцию 2. Могут ошибиться в вводе данных 3. Может поступить информация от клиентов/поставщиков за предыдущий период и тп. Если данные изменились за какой то день, то "оперативные" остатки должны автоматом пересчитаться от даты изменения до текущего все ето (и не только) должно быть учтено, ето отдельные операции, с отдельным доступом, правами и тд ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 14:06 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Практика показывает, что при автоматическом изменении текущих остатков после ввода/удаления/изменения документов, периодически возникают ошибки. Которые надо исправлять путем пересчета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 14:14 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
Stax не понял, зачем пересчитывать? задним числом не работаем (за вчера учет в спецоперациях, которые если надо правят и остатки) ..... stax В процессинговых карточных системах вообще не хранят остатки кроме текущих, да и тех не одна штука (доступный, фактический ....) Понятие "опер дня" есть но оно не такое жесткое, т.к. карточный сервис доступен 24/7 Все остатки высчитываються от текущего, т.к. например в выписке надо показать остаток на начало периода и на конец. И алгоритмы вычисления среднемесячных (средних за период) остатков я применял другие, очень "тяжело" считать остаток на каждый день и делить на количество дней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 14:47 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
[quot Stax]kernAпропущено... все ето (и не только) должно быть учтено, ето отдельные операции, с отдельным доступом, правами и тд ..... stax Ты всё не учтёшь. Например, реальный пример, электроснабжающие организации получают данные о поставке ЭЭ от электростанции каждый день. Чтобы свести баланс за день, им нужно знать расход ЭЭ каждый день. То есть, получать от потребителей данные каждые сутки. Среди потребителей присутствует пару садоводств. Садоводство не может подавать данные каждые сутки, тк зависит от дачников, которые подают данные 1 раз в год. Всё, задача неразрешима. В реальности, садоводство заключает договор с поставщиком на какой то объём и этот объём считается плановым. Один из учётов: Берётся факт от Электростанции - вычитается расход на транспортировку - фактический расход от потребителей. Остаток ЭЭ дробится между поставщиками по плановому расходу. Когда появляются фактические показатели(вместо плановых), то вся ветка пересчитывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 14:50 |
|
||
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#18+
kernA, в каждой области есть свои нюансы, поетому я и написал "и не только" во многих случаях и не надо знать "остатки" на каждый день, достаточно напр на отчетную дату подозреваю что, напр, учет "остатка" урана/спирта тож имеет свои нюансы, оборотов нет, а его все меньше и меньше ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 15:19 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1883917]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
303ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 604ms |

| 0 / 0 |
