Сводная таблица SQL с вычитанием - PullRequest
0 голосов
/ 17 января 2019

Я использую SQL, и у меня есть три столбца user_id, user_action и timestamp , которые применяют временные метки к пяти различным типам действий пользователя, пронумерованных от 1 до 5.

У меня есть несколько тысяч user_ids и действий в течение нескольких лет. Пример необработанных данных

  1. Во-первых, мне нужно создать сводную таблицу с метками времени из только две из user_actions, сгруппированные по user_id, а затем создать новый столбец, который вычитает разницу во времени - назовите это столбец разница по времени .

Код, предоставленный Caius Jard в комментариях, работает для этой части.

  1. Теперь мне нужно добавить еще один столбец номера недели (TIMESTAMP в формате DATETIME2, поэтому мне нужно включить

DATEPART(week, timestamp) as week в этот код и используйте его для создания двухнедельного скользящего среднего на основе номера недели и разницы по времени.

1 Ответ

0 голосов
/ 17 января 2019

Это не полный ответ на весь вопрос.Вот заглушка для шага 1:

SELECT 
  user, 
  MAX(CASE WHEN action = 2 THEN action END) as action2,
  MAX(CASE WHEN action = 5 THEN action END) as action5,
  DATEDIFF(
    MAX(CASE WHEN action = 2 THEN action END),
    MAX(CASE WHEN action = 5 THEN action END) 
  ) as days_between
FROM t
WHERE action in (2,5)
GROUP BY user

Хотя это не вычисляет ваш минус столбец - я не был полностью уверен, что такое отметка времени типа данных и возможна ли какая-либо прямая математика, или это строкаэто нужно преобразовать.Если вы можете добавить эту деталь к вашему q, это поможет (или оставит комментарий)

Мне было нелегко разобраться в вашем шаге 2, пожалуйста, улучшите ваш q, предоставив ожидаемые результаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...