1

私はこのクエリを持っています:

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 分ごとに最初と最後のレコードでグループ化したいと思います。何か案が?ありがとう

4

1 に答える 1

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 が文字列ではなく、timestamp/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; 

よりきれいです

于 2012-09-02T01:30:46.073 に答える