带减法的SQL数据透视表

时间:2019-01-17 06:17:10

标签: mysql sql

我正在使用SQL,我有三列 user_id,user_action和timestamp ,它们将时间戳应用于5种不同类型的用户操作,编号为1到5。

在几年的时间里,我有数千个user_id和操作。 Example of Raw Data

  1. 首先,我需要创建一个数据透视表,其时间戳为 仅将两个user_actions(按user_id分组),然后创建一个 减去时差的全新列-称之为 列 time_difference

Caius Jard在评论中提供的代码适用于此部分。

  1. 现在,我需要添加另一列星期数(TIMESTAMP为DATETIME2格式,因此我需要合并

DATEPART(week, timestamp) as week插入此代码,并使用它根据周数和time_difference创建两周移动平均值。

1 个答案:

答案 0 :(得分:0)

这不是整个问题的完整答案。这是步骤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