My dbfiddle

我有一个表,存储每5分钟多个设备的用户计数.每个设备的每个时间戳都有自己的行.如我在小提琴中所示,我创建了一个查询来计算特定日期每个CREATE_TIME的所有行的总和.然后我将其添加到查询中,以求出最大和.然后,我将其相加,以求出具有该最大和的组的create_time.然后,我将它们组合在一起,以获得构成具有最大总和的CREATE_TIME组的各个行.太棒了!

虽然它对特定的一天有效,但我就是想不出如何在多天里做到这一点.我以为我可以按日期(Create_Time)来分组,但我显然没有按分组go 把握.从这一点来看,我不能说我已经try 过其他任何事情,因为我就是无法理解它.

任何帮助都将不胜感激!

编辑: 我在小提琴的底部添加了一个查询,它显示了我希望我的结果是什么.这对于"最后3天"的演示来说是不错的,但选项可以追溯到12个月前,我不认为365个unions 是可行的;)

推荐答案

使用FIRST_VALUE()窗口函数获取每一天的create_time的值,最大和为users:

WITH cte AS (
  SELECT DISTINCT FIRST_VALUE(create_time) OVER (PARTITION BY DATE(create_time) ORDER BY SUM(users) DESC) create_time 
  FROM test 
  GROUP BY create_time
)
SELECT id, create_time AS stat_time, users
FROM test
WHERE create_time IN (SELECT create_time FROM cte);

See the demo.

Mysql相关问答推荐

SQL Store Procedure Throwing [42000][1064]您在EXECUTE stat USING声明上的SQL语法中有错误

是否有一种方法可以在mysql中设置一列,使其自动成为该行的行号的值?

过程/别名是有点长的MySQL命令的一部分吗?

我需要为用户提供MySQL视图和存储的 routine ,但不是基础表

计算男生的人数和女生的人数.学生是有入学记录的人

DJANGO 使用原始 MYSQL 查询计算记录数并在 html 模板中使用结果

没有 ORDER BY 的查询性能很高,有 ORDER BY 的查询速度慢得像爬行一样

将上传文件的存储路径放在一张表中的缺点是什么?

MySQL如何在触发器内部 Select 多行然后插入它们

Travis 构建失败并出现错误 LOAD DATA LOCAL INFILE 文件请求因访问限制而被拒绝

无法从mysql数据库获取数据

Select 不同的列,其中另一列不包含特定值

如何将结果列中的不同值按其他列sql中的值带入单行

MySQL Join 查询位置从订单

如何在更新语句中使用多个子字符串函数?

在 Presto Athena 中将字符串转换为数组

如何在 MySQL 中 Select 字段具有最小值的数据?

在 MYSQL 中按枚举字段排序

问号在 MySQL 中WHERE column = ?的意义是什么?

在 MySQL 中删除数据库返回删除数据库错误:66