表设计
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 ) 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.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 ) 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.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 ) 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.save_date) t2
WHERE t2.seq = 1