Mysql 如何将多个时间戳仅按一个日期分组
我有两个不同的时间戳,一个用于创建帐户的时间戳,另一个用于他们第一次使用产品的时间戳。如果从创建帐户起,产品的首次使用时间少于24小时,则在虚拟变量列中为其分配1,否则为其分配0。然后,我想将这些按天分组,而不是按每个时间戳分组 我尝试了分组方式,然后尝试了DateAddAndDateDiff的各种组合,还创建了一个函数来显示两天之间的日期,但没有任何效果Mysql 如何将多个时间戳仅按一个日期分组,mysql,sql,Mysql,Sql,我有两个不同的时间戳,一个用于创建帐户的时间戳,另一个用于他们第一次使用产品的时间戳。如果从创建帐户起,产品的首次使用时间少于24小时,则在虚拟变量列中为其分配1,否则为其分配0。然后,我想将这些按天分组,而不是按每个时间戳分组 我尝试了分组方式,然后尝试了DateAddAndDateDiff的各种组合,还创建了一个函数来显示两天之间的日期,但没有任何效果 SELECT data.ORIGINAL_TIMESTAMP AS "data_timestamp", data2.ORIGI
SELECT data.ORIGINAL_TIMESTAMP AS "data_timestamp",
data2.ORIGINAL_TIMESTAMP AS "data2_timestamp",
CASE
WHEN DATEDIFF(minute, data.ORIGINAL_TIMESTAMP, data2.ORIGINAL_TIMESTAMP) <=1440 THEN 1
ELSE 0
END AS "24_hour_dummy_variable",
((SUM("24_hour_dummy_variable")) OVER (
ORDER BY data.ORIGINAL_TIMESTAMP ASC rows between 999 preceding AND current row)*100) AS "running_avg"
FROM data
LEFT JOIN data2
ON data.ACCOUNT = data2.ACCOUNT
GROUP BY DATEADD(day, DATEDIFF(day, 0, org_created.ORIGINAL_TIMESTAMP), 0)
函数“DATE\u DIFFTIMESTAMPINMONTHS”的参数类型无效。您可以使用以下多个查询来完成此操作:
WITH table_a as
(SELECT data.id id,
CASE
WHEN data.ORIGINAL_TIMESTAMP - data2.ORIGINAL_TIMESTAMP <=1 THEN 1
ELSE 0
END dummy_variable
FROM data
JOIN data2
ON data.ACCOUNT = data2.ACCOUNT)
Select sum(table_a.dummy_variable) agg, trunc(data.original_timestamp)
FROM data
JOIN table_a on table_a.id = data.id
GROUP BY trunc(data.original_timestamp)
此代码适用于OracleSQL,但您也可以在MySQL中执行相同的操作。请显示代码。谢谢!我只是想知道agg和trunc函数在这种情况下是如何工作的?agg不是一个函数,只是聚合结果的别名,trunc函数会截断数据库中datetime的时间部分。