MYSQL Group按订单重复记录

时间:2014-10-18 19:14:54

标签: mysql grouping records

我的问题是这个链接的类似情况 Grouping records in order (SQL)

但是它在sqlite中并且无法在mysql中运行它

我的记录

街道|时间
-------------------
  ABCD | 00:00
  ABCD | 01:15
  FFFF | 02:00
  GHIJ | 03:15
  GHIJ | 05:16
  FFFF | 05:20
  FFFF | 05:35
  ABCD | 5点46

我预期的结果

街道|计数| min_time | max_time
--------------------------------------------
  ABCD | 2 | 00:00 | 01:15
  FFFF | 1 | 02:00 | 02:00
  GHIJ | 2 | 03:15 | 05:16
  FFFF | 2 | 05:20 | 05:35
  ABCD | 1 | 05:46 | 5点46

查询的任何帮助?

避免误解,我需要在MYSQL数据库中运行此查询。 谢谢你的回答。

2 个答案:

答案 0 :(得分:1)

在MySQL中你可以这样做,我相信你可以在sqlite中以同样的方式做到这一点

SELECT street, COUNT(*), MIN(time), MAX(time)
FROM table 
GROUP BY street

答案 1 :(得分:0)

您似乎在寻找street中具有相同值的连续行(基于时间)。这是SQLite的一个难点,因为它既不支持窗口函数也不支持变量。但是,你可以用一招来做到这一点。计算“街道”在给定行之前出现的次数,其中与当前行中的不同值。这为每个连续的街道组提供了一个常量。

select street, count(*) as count, min(time) as min_time, max(time) as max_time
from (select m.*,
             (select count(*)
              from myrecords m2
              where m2.time < m.time and m2.street <> m.street
             ) as grp
      from myrecords m
     ) m
group by street, grp;