我有,我有一个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