我有,我有一個ID相關聯的日期時間的表:選擇最長的共同TIMERANGE
┌────────────────┬──────────────────────┐
│ location_id | datetime |
├────────────────┼──────────────────────┤
│ 200333 | 2008-01-01 00:00:00 |
│ 200333 | 2008-01-01 01:00:00 |
│ 200333 | 2008-01-01 02:00:00 |
| ... | ... |
│ 200333 | 2009-10-23 21:00:00 |
│ 200333 | 2009-10-23 22:00:00 |
│ 200333 | 2009-10-23 23:00:00 |
│ 200768 | 2008-06-01 00:00:00 |
│ 200768 | 2008-06-01 01:00:00 |
│ 200768 | 2008-06-01 02:00:00 |
| ... | ... |
│ 200768 | 2009-12-31 00:00:00 |
│ 200768 | 2009-12-31 00:00:00 |
│ 200768 | 2009-12-31 00:00:00 |
└────────────────┴──────────────────────┘
什麼是選擇最長的時間段這兩個重疊location_id
的份額呢?在這種情況下,所需的輸出將是:
┌──────────────────────┬──────────────────────┐
│ start | end |
├──────────────────────┼──────────────────────┤
│ 2008-06-01 00:00:00 | 2009-10-23 23:00:00 |
└──────────────────────┴──────────────────────┘
我可以很容易地得到使用MIN()
和MAX()
提供最長期限,但我將如何去選擇的最大日期時間的最大最小值日期時間的和最小?
哦,這個表包含19個000 000行,所以獎勵積分爲運行速度快:)
有一個錯字在你期望的最終輸出:2009-10-23 23:00:00,而不是2008-10-23 23:00:00 ? – Patrick 2010-03-05 09:04:34
@Patrick,是的,是一個錯字。 – 2010-03-05 09:13:28