Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Скользящее окно в комбинации с count(distinct) / 7 сообщений из 7, страница 1 из 1
10.05.2018, 14:34
    #39642682
mlader
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
Здравствуйте.

Имеется таблица вида:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with a as(
          select '01.01.2018' tdate, '1' user_id from dual union all
          select '01.01.2018' tdate, '2' user_id from dual union all
          select '02.01.2018' tdate, '1' user_id from dual union all
          select '02.01.2018' tdate, '3' user_id from dual union all
          select '03.01.2018' tdate, '1' user_id from dual union all
          select '03.01.2018' tdate, '2' user_id from dual union all
          select '04.01.2018' tdate, '1' user_id from dual union all
          select '04.01.2018' tdate, '4' user_id from dual
         )



Я хочу скользящим окном посчитать количество уникальных пользователей на дату. Результат должен быть такой:
dateunique_users01.01.2018202.01.2018303.01.2018304.01.20184

Думал, сработает запрос вида:
Код: plsql
1.
select tdate, count(distinct user_id) over(order by tdate asc) from a



Но в этом случае возникает ошибка 'ORA-30487: использование ORDER BY здесь запрещено'.
Если DISTINCT убрать, то работает. Можно ли решить подобную проблему?
...
Рейтинг: 0 / 0
10.05.2018, 14:37
    #39642687
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
mlader,

row_number=1
...
Рейтинг: 0 / 0
10.05.2018, 15:12
    #39642707
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
mlader, комбинация полей tdate+user_id уникальна?
...
Рейтинг: 0 / 0
10.05.2018, 15:32
    #39642735
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
...
Рейтинг: 0 / 0
10.05.2018, 15:45
    #39642747
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
mlader,

влоб (наверное можно проще)
Код: 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.
  1  with a as(
  2            select '01.01.2018' tdate, '1' user_id from dual union all
  3            select '01.01.2018' tdate, '2' user_id from dual union all
  4            select '02.01.2018' tdate, '1' user_id from dual union all
  5            select '02.01.2018' tdate, '3' user_id from dual union all
  6            select '03.01.2018' tdate, '1' user_id from dual union all
  7            select '03.01.2018' tdate, '2' user_id from dual union all
  8            select '04.01.2018' tdate, '1' user_id from dual union all
  9            select '04.01.2018' tdate, '4' user_id from dual
 10           )
 11  ,aa as (
 12  select a.*
 13  ,row_number() over (partition by user_id order by tdate) rn
 14  from a
 15  )
 16  select distinct tdate,sum(decode (rn,1,1)) over (order by tdate) cc
 17  from aa
 18* order by 1
SQL>
SQL> /

TDATE              CC
---------- ----------
01.01.2018          2
02.01.2018          3
03.01.2018          3
04.01.2018          4



.....
stax
...
Рейтинг: 0 / 0
10.05.2018, 16:05
    #39642774
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
Staxвлоб (наверное можно проще)
Код: plsql
1.
2.
3.
 16  select distinct tdate,sum(decode (rn,1,1)) over (order by tdate) cc
 17  from aa
 18* order by 1

Код: plsql
1.
2.
3.
4.
select tdate, sum(count(decode(rn,1,1))) over (order by tdate) cc
from aa
group by tdate
order by 1
...
Рейтинг: 0 / 0
10.05.2018, 16:32
    #39642789
mlader
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скользящее окно в комбинации с count(distinct)
Stax,

Класс, спасибо! Интересная хитрость.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Скользящее окно в комбинации с count(distinct) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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