Mysql 如何将多个时间戳仅按一个日期分组

Mysql 如何将多个时间戳仅按一个日期分组,mysql,sql,Mysql,Sql,我有两个不同的时间戳,一个用于创建帐户的时间戳,另一个用于他们第一次使用产品的时间戳。如果从创建帐户起,产品的首次使用时间少于24小时,则在虚拟变量列中为其分配1,否则为其分配0。然后,我想将这些按天分组,而不是按每个时间戳分组 我尝试了分组方式,然后尝试了DateAddAndDateDiff的各种组合,还创建了一个函数来显示两天之间的日期,但没有任何效果 SELECT data.ORIGINAL_TIMESTAMP AS "data_timestamp", data2.ORIGI

我有两个不同的时间戳,一个用于创建帐户的时间戳,另一个用于他们第一次使用产品的时间戳。如果从创建帐户起,产品的首次使用时间少于24小时,则在虚拟变量列中为其分配1,否则为其分配0。然后,我想将这些按天分组,而不是按每个时间戳分组

我尝试了分组方式,然后尝试了DateAddAndDateDiff的各种组合,还创建了一个函数来显示两天之间的日期,但没有任何效果

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的时间部分。