开发者社区 问答 正文

我想用一句sql查询过去一段时间(例如3个月)内的每天的最后一条数据?报错

@lazeyliu 你好,想跟你请教个问题:

  1. 我想用一句sql查询过去一段时间(例如3个月)内的每天的最后一条数据:数据很多,我只取每天或每小时最后一条数据。现在我用以下的sql,会报错,请问这个sql有错误吗?,或者还有其他方法吗?
  2. SELECT * FROM 表名 where 时间字段>'2017-03-01 00:00:00' and 时间字段>=DATE_SUB(DATE_FORMAT(时间字段,'%Y-%m-%d %H:40:00'),INTERVAL 1 MINUTE) group by DATE_FORMAT(时间字段,'%Y-%m-%d %H');
  3. 例如过去1个月会每过1分钟数据库里就会增加一条数据,一天就有1440条数据,一个月有44640条数据,我要达到的效果是,只取31条数据,这些数据是每隔一天取一条。
  4. 这个是数据,我还想知道,我用的那句sql语句有问题吗?

展开
收起
爱吃鱼的程序员 2020-06-08 12:49:36 850 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    哦还是有问题的,找最后的需要这样:
     

    SELECT*FROM(SELECT*FROM表名 

    where

            时间字段>=开始时间

    and时间字段<=结束时间 orderbyiddesc)temp

    groupbyDATE_FORMAT(temp.时间字段,'%Y-%m-%d%H');

    我觉得时间倒序,然后按天分组建议加个冗余字段,亦或者冗余表历史数据,是固定数据,没必要每次都要去查数据库。存档就好了。
    2020-06-08 12:49:49
    赞同 展开评论
问答分类:
SQL
问答地址: