MySQL自定义时间间隔抽稀

表设计

create table monitor
(
    tid       varchar(255)   not null,
    save_date datetime       not null,
    tlevel    decimal(10, 2) null,
    primary key (tid, save_date)
);

数据如下

在这里插入图片描述

按分钟抽稀

SELECT t2.tid,
       t2.save_date,
       t2.tlevel,
       t2.gid,
       t2.seq
FROM (SELECT t1.tid,
             t1.save_date,
             t1.tlevel,
             t1.gid,
             ROW_NUMBER() over ( PARTITION BY t1.tid, t1.gid ORDER BY t1.tid, t1.gid, t1.save_date ) AS seq
      FROM (SELECT tid,
                   save_date,
                   tlevel,
                   FLOOR(UNIX_TIMESTAMP(save_date) / (60 * 1)) AS gid
            FROM monitor
            ORDER BY tid,
                     save_date) t1
      ORDER BY t1.tid,,
      		   t1.gid
               t1.save_date) t2
WHERE t2.seq = 1

按小时抽稀

SELECT t2.tid,
       t2.save_date,
       t2.tlevel,
       t2.gid,
       t2.seq
FROM (SELECT t1.tid,
             t1.save_date,
             t1.tlevel,
             t1.gid,
             ROW_NUMBER() over ( PARTITION BY t1.tid, t1.gid ORDER BY t1.tid, t1.gid, t1.save_date ) AS seq
      FROM (SELECT tid,
                   save_date,
                   tlevel,
                   FLOOR(UNIX_TIMESTAMP(save_date) / (60 * 60 * 1)) AS gid
            FROM monitor
            ORDER BY tid,
                     save_date) t1
      ORDER BY t1.tid,,
      		   t1.gid
               t1.save_date) t2
WHERE t2.seq = 1

按天抽稀

SELECT t2.tid,
       t2.save_date,
       t2.tlevel,
       t2.gid,
       t2.seq
FROM (SELECT t1.tid,
             t1.save_date,
             t1.tlevel,
             t1.gid,
             ROW_NUMBER() over ( PARTITION BY t1.tid, t1.gid ORDER BY t1.tid, t1.gid, t1.save_date ) AS seq
      FROM (SELECT tid,
                   save_date,
                   tlevel,
                   FLOOR(UNIX_TIMESTAMP(save_date) / (60 * 60 * 24 * 1)) AS gid
            FROM monitor
            ORDER BY tid,
                     save_date) t1
      ORDER BY t1.tid,
      		   t1.gid
               t1.save_date) t2
WHERE t2.seq = 1
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值