Совокупный счет для расчета ежедневной частоты с использованием SQL-запроса - PullRequest
0 голосов
/ 05 июля 2019

У меня есть набор данных, содержащий «UI» (уникальный идентификатор), время, частоту (частоту для заданного значения в столбце UI), как показано здесь:

enter image description here

Что бы я хотел добавить в новый столбец с именем daily_frequency, который просто подсчитывает каждое уникальное значение в столбце пользовательского интерфейса для данного дня последовательно, как показано на рисунке ниже.

enter image description here

Например, если UI = 114737, и это повторяется 2 раза в один день, у нас должно быть 1 и 2 в столбце daily_frequency.

Я мог бы сделать это с помощью пакетов Python и Panda, используя методы group by и cumcount следующим образом ...

df['daily_frequency'] = df.groupby(['UI','day']).cumcount()+1

Однако по какой-то причине Я должен сделать это с помощью SQL-запросов (Amazon Redshift) .

Ответы [ 2 ]

2 голосов
/ 05 июля 2019

Я думаю, что вы хотите получить счетчик, который можно рассчитать как:

COUNT(*) OVER (PARTITION BY ui, TRUNC(time) ORDER BY time
               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS daily_frequency
0 голосов
/ 05 июля 2019

Хотя ответ Салмана кажется правильным, я думаю, ROW_NUMBER() проще:

COUNT(*) OVER (PARTITION BY ui, time::date
               ORDER BY time
              ) AS daily_frequency
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...