powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Среднемесячные остатки по балансовому счету Oracle
17 сообщений из 17, страница 1 из 1
Среднемесячные остатки по балансовому счету Oracle
    #39641280
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток. Столкнулся вот с такой задачей:
Среднемесячные остатки по балансовому счету.
Входные данные: маска счета, дата с, дата по.
Выходные данные: номер счета, код валюты, среднемесячный остаток.
Сортировка: среднемесячный остаток по убыванию.
Примечание: сначала получение остатков лицевым счетам за каждый календарный день периода (13 цифр), затем получение среднего значения.


С подзапросами пока что напряжно, прошу помощи. Хотя бы на примере посмотреть как должны выглядеть селекты.
Вот то что сделал, но это в корне не так, как необходимо в условии.

SELECT
ACC.CODE "Номер счета", P_DIMENSION.GETDIMCODE(CURRENCY_ID) "Валюта"
FROM
ACCOUNT ACC,
(SELECT -SUM(DEBET) AS DEBET
FROM
ACCTURN ACC
WHERE
ACC.DATE_TURN BETWEEN '01/12/2009' AND '01/01/2010'
UNION
SELECT SUM(KREDIT) AS KREDIT
FROM
ACCTURN ACC
WHERE
ACC.DATE_TURN BETWEEN '01/12/2009' AND '01/01/2010')
WHERE
ACC.CODE LIKE '3012200599%'
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641291
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил перенести подзапрос в селект, в итоге выводит большие минусовые значение остатка.
SELECT
ACC.CODE "Номер счета", P_DIMENSION.GETDIMCODE(CURRENCY_ID) "Валюта",
((SELECT -SUM(DEBET) AS DEBET
FROM
ACCTURN ACC
WHERE
ACC.DATE_TURN BETWEEN '01/12/2009' AND '01/01/2010') +
(SELECT SUM(KREDIT) AS KREDIT
FROM
ACCTURN ACC
WHERE
ACC.DATE_TURN BETWEEN '01/12/2009' AND '01/01/2010')) AS SALDO
FROM
ACCOUNT ACC
WHERE
ACC_TYPE_ID = P_ACCT.GETIDBYNAME('Балансовый') AND
ACC.CODE LIKE '3012200599%'


select * from account where CODE LIKE '3012200599%'
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641307
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В качестве проверки просто посчитал суммы по дебету и кредиту, они одинаковые по данным счетам, т.е сальдо должно быть 0 (рисунок2).

В приведенном выше запросе сальдо получается -118330105739,22 и оно одинаковое для двух счетов.
Понятно, что там ошибка в логике, но пробую все варианты.
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641314
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursor777... но пробую все варианты.

Попробуйте сначала включить мозг

подзапросы (которые не нужны) не имеют привязки к счетам, которые Вы хотите посчитать, и выводят суммы по всем данным таблицы ACCTURN.
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641347
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL, добавил в подзапросы привязку в виде ACCT.ACCOUNT_ID = ACC.ID , Вы это имели в виду? Считает все равно не так.
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641355
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал без подзапроса, вроде бы считает правильно (проверял дебет/кредит и считал вручную). В чем подвох?
SELECT
ACC.CODE AS "Номер счета", ( SUM(ACCT.KREDIT) - SUM(ACCT.DEBET) ) AS "Среднемесячный остаток"
FROM
ACCOUNT ACC, ACCTURN ACCT
WHERE
ACC.ID = ACCT.ACCOUNT_ID AND
CODE LIKE '3012200%' AND
ACCT.DATE_TURN BETWEEN '31/01/2009' AND '31/01/2010'
GROUP BY ACC.CODE
ORDER BY 2 DESC;
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641373
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursor777 В чем подвох?
Такой же как и в прошлой теме - если по счету еще не было ни одного оборота, то он исчезнет из выборки.
PS среднемесячный - это не то, что вы считаете:
сначала получение остатков лицевым счетам за каждый календарный день периода
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641413
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
j2k, можно у Вас узнать, как это написать?
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641419
ramzestein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursor777,

Заходи в 408 кабинет, расскажем и подскажем. Чо ты так сразу?)
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641430
Cursor777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ramzestein, думал на форуме на мысль натолкнут, чтобы никого не отвлекать :)
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641794
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursor777Всем доброго времени суток. Столкнулся вот с такой задачей:
Среднемесячные остатки по балансовому счету.
Входные данные: маска счета, дата с, дата по.
Выходные данные: номер счета, код валюты, среднемесячный остаток.
Сортировка: среднемесячный остаток по убыванию.
Примечание: сначала получение остатков лицевым счетам за каждый календарный день периода (13 цифр), затем получение среднего значения.


С подзапросами пока что напряжно, прошу помощи. Хотя бы на примере посмотреть как должны выглядеть селекты.
Вот то что сделал, но это в корне не так, как необходимо в условии.

SELECT
ACC.CODE "Номер счета", P_DIMENSION.GETDIMCODE(CURRENCY_ID) "Валюта"
FROM
ACCOUNT ACC,
(SELECT -SUM(DEBET) AS DEBET
FROM
ACCTURN ACC
WHERE
ACC.DATE_TURN BETWEEN '01/12/2009' AND '01/01/2010'
UNION
SELECT SUM(KREDIT) AS KREDIT
FROM
ACCTURN ACC
WHERE
ACC.DATE_TURN BETWEEN '01/12/2009' AND '01/01/2010')
WHERE
ACC.CODE LIKE '3012200599%'

сначала Вам надо определится что хранится в ACCTURN
допустим
1) CODE -номер счета
2) DEBET -дебетовый остаток
3) KREDIT - кредитовый остаток
4) DATE_TURN - дата чего-то, чего?
-остаток на начало дня?
-остаток на конец дня?
-остаток на каждий день (в тч выходные), или когда был оборот?

после етого приступите к написанию селекта, за раз все не решайте, поступово
1) отберите нужные счета
2) получите остатки за период (за каждый календарный день периода (13 цифр))
4) решите что значит 13
5) посчитайте среднее
6) отсортируйте

гдето так

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

1. Тут бы начать вообще с получения остатка, так как DEBET и KREDIT это обороты которые к остатку имеют отношение но не более.
2. Для получение среднемесечного остатка, не имея поля с остатком на конец/начало дня, не самая оптимальная идея его вычеслять для каждого дня, а потом делить на кол-во дней. Есть другие алгоритмы - более быстрые.
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39641997
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLStax,

1. Тут бы начать вообще с получения остатка, так как DEBET и KREDIT это обороты которые к остатку имеют отношение но не более.
2. Для получение среднемесечного остатка, не имея поля с остатком на конец/начало дня, не самая оптимальная идея его вычеслять для каждого дня, а потом делить на кол-во дней. Есть другие алгоритмы - более быстрые.

имхо
1) считаю что DEBET и KREDIT есто остаток на счете дебетовый/кредитовый, я провтыкал что ето оборот
но даже если оборот, то надо сначала посчитать остатки за период ACC.DATE_TURN <= '01/01/2010'
потом уже считать среднее

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

....
stax
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39642054
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax, Вряд ли там миллионы записей, уж очень похоже на учебную задачу :)
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39642065
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
j2k,

не знаю, наверное лаба

ACCOUNT - судя по названию ето счета, а надо остатки

.....
stax
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39642181
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
j2kсначала получение остатков лицевым счетам за каждый календарный день периода
Ну можно же, наверное, и просто взвесить остатки интервалом, зачем записи пусту плодить...
...
Рейтинг: 0 / 0
Среднемесячные остатки по балансовому счету Oracle
    #39642199
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousНу можно же, наверное, и просто взвесить остатки интервалом, зачем записи пусту плодить...Сферического коня можно взвешивать и так, и этак. Кубическая масса всё равно не получится.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Среднемесячные остатки по балансовому счету Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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