|
|
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
Добрый день, Комрады ! Возник вопрос. У меня есть таблица и данные с остатками сумм в ней, в праздничные дни и в воскресенье данные в ней отсутствуют, т.к. наша организация не работает. Для формирования среднего баланса необходимо в праздничные дни или выходные заливать данные последнего рабочего дня перед выходными. Т.е. если у нас день недели = воскресенье, я беру данные за 18.03.2017 и заливаю их за 19.03.2017. Вопрос как мне сделать аналогично с праздниками, которые длятся по несколько дней, т.е. за 21.03.2017, 22.03.2017 и 23.03.2017 число должны залиться данные за 20.03.2017. Думаю тут должна подойти аналитическая функция, но какая ? DATE_REPLACE = DATE_CALENDAR - 1 EQ - 1 - обычный день, 2 - праздник или выходной DATE_CALENDAR DATE_REPLACE DAY_NAME DAY_NUMBER EQ 17.03.2017 16.03.2017 ПТ 5 1 18.03.2017 17.03.2017 СБ 6 1 19.03.2017 18.03.2017 ВС 7 2 20.03.2017 19.03.2017 ПН 1 1 21.03.2017 20.03.2017 ВТ 2 2 22.03.2017 21.03.2017 СР 3 2 23.03.2017 22.03.2017 ЧТ 4 2 24.03.2017 23.03.2017 ПТ 5 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 12:13 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
DATE_CALENDAR DATE_REPLACE DAY_NAME DAY_NUMBER EQ17.03.2017 16.03.2017 ПТ 5 118.03.2017 17.03.2017 СБ 6 119.03.2017 18.03.2017 ВС 7 220.03.2017 19.03.2017 ПН 1 121.03.2017 20.03.2017 ВТ 2 222.03.2017 21.03.2017 СР 3 223.03.2017 22.03.2017 ЧТ 4 224.03.2017 23.03.2017 ПТ 5 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 12:22 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
Конечный результат должен получиться таким - DATE_CALENDAR DATE_REPLACE EQ17.03.2017 17.03.2017 118.03.2017 18.03.2017 119.03.2017 18.03.2017 220.03.2017 19.03.2017 121.03.2017 19.03.2017 222.03.2017 19.03.2017 223.03.2017 19.03.2017 224.03.2017 24.03.2017 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 12:28 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
Wild-Jack, last_value ignore nulls .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 12:45 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
StaxWild-Jack, last_value ignore nulls .... stax Спасибо большое, Добрый человек ! Получилось ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 14:34 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
Чтобы не плодить темы с задачами, добавлю свои сюда. Только приступил к изучению SQL, так что просьба не кидаться всяким несвежим :) Есть таблица . Вопросы: 1) Список идентификаторов клиентов, имеющих действующие договоры более чем в одном банке. 2) Список идентификаторов клиентов, имеющих договоры 3 разных типов в одном банке. Если клиент имеет по 3 разных типа договора в нескольких банках, он должен попасть в список только один раз. 3) Получить отчет со списком количества клиентов во всех банков в разрезе типов договоров. Учитывать только действующие договоры. Отчет должен содержать столбцы: id_bank банк type_id тип договора num кол-во клиентов 4) Список открытых договоров, пронумерованных по порядку (1,2,3,... без пропусков номеров) для каждого банка. Эти номера не содержатся в таблице, т.е. должны быть вычисляемым полем. Т.е., №№ 1,2,3, ..., N для банка A, 1,2,3, ..., M для банка B, и т.д. 5) Написать запрос, выводящий список id клиентов у которых нет договоров в самом крупном банке (с максимальным кол-вом открытых договоров). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 14:20 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
GroMoZeKazzz, что не получается то? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 15:17 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
Stax , с третьим номером, вроде разобрался. select c.id_bank, c.type_id, count(c.id_client) num from contract c where c.stat = 1 group by c.type_id, c.id_bank order by 2 Разбираюсь с первым пока. Условие четвертого вообще не понял ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 15:24 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
С первым пока никак, но пятый, вроде поддался: select c.id_bank from contract c group by c.id_bank having count(c.type_id) = (select max(cnt) from (select count(c.id) as cnt from contract c group by c.id_bank)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 15:37 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
GroMoZeKazzzС первым пока никак более чем в одном банке - having count(distinct bank)>1 ps 5-й еще раз проверьте решение "... выводящий список id клиентов ..." ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 15:52 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
Staxболее чем в одном банке - having count(distinct bank)>1 ps 5-й еще раз проверьте решение "... выводящий список id клиентов ..." ..... stax Да, в 5-м был малость невнимателен. select c.id_client from contract c where c.id_bank not in (select c.id_bank from contract c group by c.id_bank having count(c.type_id) = (select max(cnt) from (select count(c.id) as cnt from contract c group by c.id_bank))) Благодарствую, за having count. Разобрался с №1 двумя способами: select c.id_client from contract c group by c.id_client having count(distinct(c.id_bank)) > 1 order by 1 select * from ( select c.id_client, count(c.id_bank) cnt from contract c group by c.id_client ) cnt where cnt.cnt > 1 order by 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 16:08 |
|
||
|
Помогите разрешить задачу !
|
|||
|---|---|---|---|
|
#18+
GroMoZeKazzz, 5-ку пилите Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. зы a) групповые ф-ции могут быть вложенными max(count(...)) б) крупных банков может быть и несколько ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2017, 16:34 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39556268&tid=1884892]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 299ms |

| 0 / 0 |
