powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Sql
8 сообщений из 33, страница 2 из 2
Oracle Sql
    #39857806
AckermanMika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sharkoff76,
А можно разбить значение поля Count(distinct skp_client) по статусам?
Допустим в первой строке кол-во 1200, в reject=500 в Approved=700(условно).
...
Рейтинг: 0 / 0
Oracle Sql
    #39857810
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sharkoff76,

прикиньте
все первые кредиты выдавались первого числа месяца

зы
Group by p.name_credit_status, trunc(t.dtime_Decision,'mm')

.....
stax
...
Рейтинг: 0 / 0
Oracle Sql
    #39857813
sharkoff76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AckermanMikaStax,
Смотрите. У вас в первом клиенте есть 6 кредитов. Но теперь обратите внимание на месяцы, первое 01.07 второе 17.07 третее 27.07. Как видите в одном месяце 3 кредита, но нужно взять только первый от даты 01.07. На втором месяце у этого же клиента есть также 3 кредита от даты 01/02/03.08 но нужно вывести кредит только первый от 01.08.
Получается с месяца 07 выходит 1 кредит с месяца 08 выходит также 1 кредит.output:1+1=2.И так по каждому месяцу нужно посчитать в разрезе 6 месяцев. Потом прибавить все первые кредиты для каждого клиента.

Уточню
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 select count(distinct skp_client), dm
          from (select t.skp_client,
                       --dtime_Decision,
                       case
                         when row_number()
                          over(partition by skp_client,
                                   trunc(dtime_Decision, 'mm') order by
                                   dtime_Decision) = 1 then
                          trunc(dtime_Decision, 'mm')
                         else
                          null
                       end dm,
                       dtime_Decision
                  from owner_dwh.dc_Credit_case t
                  join owner_dwh.cl_credit_status p
                    on t.skp_credit_status = p.SKP_CREDIT_STATUS
                 where p.code_credit_status in ('D', 'S')
                   and skp_client > 0
                   and dtime_decision > add_months(sysdate, -6))
         where dm is not null
         group by dm;
...
Рейтинг: 0 / 0
Oracle Sql
    #39857817
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AckermanMikaА можно разбить значение поля Count(distinct skp_client) по статусам?

Код: 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.
  1  with cl_credit_status (client_ref,status,dat) as(
  2  select 1,'D',date '2019-07-01' from dual union all
  3  select 1,'S',date '2019-07-17' from dual union all
  4  select 1,'K',date '2019-07-27' from dual union all
  5  select 2,'D',date '2019-07-15' from dual union all
  6  select 2,'S',date '2019-07-25' from dual union all
  7  select 1,'K',date '2019-08-01' from dual union all
  8  select 1,'S',date '2019-08-02' from dual union all
  9  select 1,'D',date '2019-08-03' from dual union all
 10  select 2,'S',date '2019-08-04' from dual union all
 11  select 2,'S',date '2019-08-05' from dual union all
 12  select 3,'M',date '2019-08-01' from dual union all
 13  select 4,'M',date '2019-09-01' from dual )
 14  --первыq кредит = 1 в разрезе клиeнта
 15  ,tt as (select c.*,lag('',1,status) over (partition by client_ref order by dat ) f from cl_credit_status c)
 16  --к-во клиентов в разрезе статуса и месяца + к-во первых кредитов
 17  select status,trunc(dat,'mm') yyyy_mm,count(distinct client_ref)
 18  ,sum(decode(f,status,1)) first_cred_status_mm
 19  ,sum(sum(decode(f,status,1))) over (partition by trunc(dat,'mm')) first_cred_mm
 20  ,sum(count(f)) over () first_cred_all
 21  from tt group by status,trunc(dat,'mm')
 22* order by 2,1
SQL> /

S YYYY_MM  COUNT(DISTINCTCLIENT_REF) FIRST_CRED_STATUS_MM FIRST_CRED_MM FIRST_CRED_ALL
- -------- ------------------------- -------------------- ------------- --------------
D 01.07.19                         2                    2             2              4
K 01.07.19                         1                                  2              4
S 01.07.19                         2                                  2              4
D 01.08.19                         1                                  1              4
K 01.08.19                         1                                  1              4
M 01.08.19                         1                    1             1              4
S 01.08.19                         2                                  1              4
M 01.09.19                         1                    1             1              4

8 rows selected.



.....
stax
...
Рейтинг: 0 / 0
Oracle Sql
    #39857820
sharkoff76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AckermanMikasharkoff76,
А можно разбить значение поля Count(distinct skp_client) по статусам?
Допустим в первой строке кол-во 1200, в reject=500 в Approved=700(условно).

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 select count(distinct skp_client), dm,name_credit_status
          from (select t.skp_client,
                       --dtime_Decision,
                       case
                         when row_number()
                          over(partition by skp_client,
                                   trunc(dtime_Decision, 'mm') order by
                                   dtime_Decision) = 1 then
                          trunc(dtime_Decision, 'mm')
                         else
                          null
                       end dm,
                       dtime_Decision,
                       name_credit_status
                  from owner_dwh.dc_Credit_case t
                  join owner_dwh.cl_credit_status p
                    on t.skp_credit_status = p.SKP_CREDIT_STATUS
                 where p.code_credit_status in ('D', 'S')
                   and skp_client > 0
                   and dtime_decision > add_months(sysdate, -6))
         where dm is not null
         group by dm,name_credit_status
         order by dm,name_credit_status;
...
Рейтинг: 0 / 0
Oracle Sql
    #39857836
AckermanMika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sharkoff76,

Вышло. Спасибо большое:)
...
Рейтинг: 0 / 0
Oracle Sql
    #39857843
AckermanMika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sharkoff76,
У вас переменная dm используется, которая показывает что дата начинается с 1-го числа? И когда разбиваете по статусам, не сходится с изначальной суммой. Допустим за 01.03.2019 кол-во 13165. После разбивки должно быть условно 13000 approved, 165 rejected. А там когда прибавляешь, изначальная сумма не выходит.
...
Рейтинг: 0 / 0
Oracle Sql
    #39857946
sharkoff76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AckermanMika,
Может тогда имеет смысл тогда вернуться к вопросу , который задал stax.
Либо предоставьте свою "контрольку".


А именно:
staxпервый клиэнт имеет шесь кредитов
1 D 01.07.19
1 S 17.07.19
1 K 27.07.19
1 K 01.08.19
1 S 02.08.19
1 D 03.08.19
второй клиент имеет четыре кредита
2 D 15.07.19
2 S 25.07.19
2 S 04.08.19
2 S 05.08.19
третий и четвертый клиент имеют один
3 M 01.08.19
4 M 01.09.19

результат?
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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