mysql组由3行组成

时间:2012-09-02 01:15:19

标签: mysql

我有这个问题:

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分钟最后一次记录。 任何的想法? 感谢

1 个答案:

答案 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; 

更清洁