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

Имеется таблица вида:
Код: 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
Скользящее окно в комбинации с count(distinct)
    #39642687
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlader,

row_number=1
...
Рейтинг: 0 / 0
Скользящее окно в комбинации с count(distinct)
    #39642707
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mlader, комбинация полей tdate+user_id уникальна?
...
Рейтинг: 0 / 0
Скользящее окно в комбинации с count(distinct)
    #39642735
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Скользящее окно в комбинации с count(distinct)
    #39642747
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Скользящее окно в комбинации с count(distinct)
    #39642774
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Скользящее окно в комбинации с count(distinct)
    #39642789
mlader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

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


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