2014-10-18 83 views
-1

重複記錄我的問題類同情況與此鏈接 Grouping records in order (SQL)MYSQL集團按訂單

,但它是在SQLite和着來看,它在MySQL

我的記錄

街|時間
-------------------
ABCD | 00:00
ABCD | 01:15
FFFF | 02:00
GHIJ | 03:15
GHIJ | 05:16
FFFF | 05:20
FFFF | 05:35
ABCD | 05:46

結果我的預期

街| count | 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 | 05:46

對查詢有幫助嗎?

避免錯過理解,我需要這個查詢在MYSQL數據庫中運行。 感謝您的回答。

+0

這可能遠遠超出您可以在SQLite中完成的工作。編寫應用程序代碼來執行此操作會更簡單,但請注意,您必須施加_some_ order-by(可能是「time」),或者數據庫可以隨機地按順序返回行。 – 2014-10-18 19:21:33

+0

我相信他在問MySQL;鏈接的問題和答案是關於sqlite的。 – 2014-10-18 19:25:53

回答

1

在MySQL中,你可以不喜歡這樣,我相信你能做到這一點SQLite中

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

這並不能正確回答問題。請注意,「ABCD」在輸出中出現兩次。 – 2014-10-18 23:07:06

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; 
+0

我已經試過你的查詢,但它似乎MySQL沒有響應。 – 2014-10-20 08:37:26

+0

你的數據集有多大? – 2014-10-20 11:45:37

+0

4k條記錄,無論如何感謝您的解決方案 – 2014-10-20 15:26:23