我有这个问题:
SELECT t1.* FROM table t1
JOIN
(
SELECT MIN(orig_id) min_orig_id, MAX(orig_id) max_orig_id
FROM table
GROUP BY left(datetime,4), mid(datetime,5,2),
mid(datetime,7,2), mid(datetime,10,2), mid(datetime,13,2)
) t2
ON t1.orig_id = t2.min_orig_id OR t1.orig_id = t2.max_orig_id;
它按照第一个和第一个分组记录。每分钟的最后记录。 现在我想先分组&每3分钟最后一次记录。 任何的想法? 感谢
答案 0 :(得分:0)
这可能就是你要找的东西
SELECT t1.* FROM table t1
JOIN
(
SELECT MIN(orig_id) min_orig_id, MAX(orig_id) max_orig_id
FROM table
GROUP BY concat(left(datetime,4), mid(datetime,5,2),
mid(datetime,7,2), mid(datetime,10,2),(cast mid(datetime,13,2) as integer)/3)
) t2
ON t1.orig_id = t2.min_orig_id OR t1.orig_id = t2.max_orig_id;
如果datetime是时间戳/日期时间数据类型而不是字符串
SELECT t1.* FROM table t1
JOIN
(
SELECT MIN(orig_id) min_orig_id, MAX(orig_id) max_orig_id
FROM table
GROUP BY UNIX_TIMESTAMP(datetime)/3
) t2
ON t1.orig_id = t2.min_orig_id OR t1.orig_id = t2.max_orig_id;
更清洁