|
|
|
Среднемесячные остатки
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39651684&tid=1883917]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
202ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 542ms |

| 0 / 0 |
