|
Сложность с решением задач
|
|||
---|---|---|---|
#18+
Есть базовое описание таблицы. Имеется таблица проводок по счетам, отражающая факты начисления или списания денежных средств по счетам клиента. Состоит из столбцов: • BUSINESS_DT - дата проводки • ACCOUNT_DEBIT_ID - идентификатор счета дебита, с которого списываются средства • ACCOUNT_CREDIT_ID - идентификатор счета кредита, на который начисляются средства • POSTING_AMT - сумма проводки в рублях. Т.е. сумма средств, которая списывается со счета дебита и зачисляется на счет кредита. Значение всегда положительное. Нужно написать SQL-запрос , который выводит таблицу остатков за весь период, за который нам известны проводки (например, с января по март). Начальные остатки по всем счетам полагаем равными нулю. Таблица должна состоять из следующих столбцов: • Account_ID – идентификатор счета • Business_From_DT – дата, начиная с которой (включительно) сформировался указанный остаток на счете. • Business_To_DT – дата, по которую (включительно) на счете находится указанный остаток. Если остаток действует по текущий момент (дата следующего изменения остатка не известна), то поле следует заполнить датой 9999-12-31. • Account_Balance – остаток на счете Account_ID в период с Business_From_DT по Business_To_DT включительно. И еще написать SQL запрос, который выведет остатки на каждый день за период с января по март. Т.е. по каждому счету таблица должна содержать около 90 записей. Начальные остатки по всем счетам полагаем равными нулю. Столбцы таблицы: • Account_ID – идентификатор счета • Business_Date – дата, на которую посчитан остаток • Account_Balance – остаток на счете, может быть отрицательным. Уже выполнил самостоятельно ряд других заданий, приведу пример одного из них. Написать SQL-запрос, который на основании таблицы проводок рассчитает остатки по счетам на текущую дату. Начальные остатки по всем счетам полагаем равными нулю. Таблица должна состоять из следующих столбцов: • Account_ID – идентификатор счета • Current_Date – дата, на которую посчитан остаток • Account_Balance – остаток на счете, может быть отрицательным. Вот код, который работает и выполняет поставленную задачу. WITH test AS (SELECT ACCOUNT_DEBIT_ID as a, -POSTING_AMT as m FROM t WHERE BUSINESS_DT <= sysdate UNION ALL SELECT ACCOUNT_CREDIT_ID as a, POSTING_AMT as m FROM t WHERE BUSINESS_DT <= sysdate) SELECT a, sysdate, sum(m) FROM test GROUP BY 1 ORDER BY 1 Заранее подготовил тестовые данный для выполнения запроса with t (BUSINESS_DT,ACCOUNT_DEBIT_ID,ACCOUNT_CREDIT_ID,POSTING_AMT) as( select 2020-03-10, 1, 2, 1000 from dual union all select 2020-03-10, 2, 1, 100 from dual union all select 2020-03-10, 3, 1, 200 from dual union all select 2020-03-15, 2, 1, 150 from dual union all select 2020-03-19, 2, 3, 100 from dual union all select 2020-03-200, 3, 2, 50 from dual) Что касается моих сложностей не до конца понимаю, как решить те задачи, буду рада любой помощи заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 11:48 |
|
Сложность с решением задач
|
|||
---|---|---|---|
#18+
robot_samНужно написать SQL-запрос, который выводит таблицу остатков за весь период, за который нам известны проводки убери из своего запроса sysdate и добавь min/max дата проводки авторИ еще написать SQL запрос, который выведет остатки на каждый день group by BUSINESS_DT ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 12:18 |
|
Сложность с решением задач
|
|||
---|---|---|---|
#18+
123йй, спасибо за совет. Но не до конца понимаю как реализовать твои комментарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 12:29 |
|
Сложность с решением задач
|
|||
---|---|---|---|
#18+
robot_sam Вот код, который работает и выполняет поставленную задачу. WITH test AS (SELECT ACCOUNT_DEBIT_ID as a, -POSTING_AMT as m FROM t WHERE BUSINESS_DT <= sysdate UNION ALL SELECT ACCOUNT_CREDIT_ID as a, POSTING_AMT as m FROM t WHERE BUSINESS_DT <= sysdate) SELECT a, sysdate, sum(m) FROM test GROUP BY 1 ORDER BY 1 GROUP BY 1 остатки на конец дня когда был оборот, дальше допилете (или пишите что не получилось) Код: 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. 35. 36. 37. 38. 39. 40.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2021, 14:31 |
|
|
start [/forum/topic.php?fid=52&fpage=23&tid=1880364]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 251ms |
total: | 374ms |
0 / 0 |