интервал перекрытия в ЦКЛ - PullRequest
0 голосов
/ 23 марта 2010

мне нужно получить разделенные интервалы и количество перекрывающихся интервалов, например

basedata:

interval A: startTime 08:00, endTime 12:00
interval B: startTime 09:00, endTime 12:00
interval C: startTime 12:00, endTime 16:00
interval D: startTime 13:00, endTime 14:00

теперь у меня есть отдельный интервал с 10:00 до 15:00, и я должен определить, какие интервалы сначала пересекаются. результат должен быть примерно таким:

1: 10:00 - 12:00 ( intersecting with interval A )
2: 10:00 - 12:00 ( intersecting with interval B )
3: 12:00 - 15:00 ( intersecting with interval C )
4: 13:00 - 14:00 ( intersecting with interval D )

эта часть работает нормально, проблема вызывает следующее:

Мне нужно какое-то взвешивание для параллельных интервалов. это также означает, что может случиться так, что интервал пересечения должен быть разделен n раз, если он (частично) пересекается другим.

в верхнем примере ожидаемый результат будет:

1: 10:00 - 12:00 -> weightage: 50%
2: 10:00 - 12:00 -> weightage: 50%

3.1: 12:00 - 13:00 -> weightage: 1oo%
3.2: 13:00 - 14:00 -> weightage: 50%
3.3: 14:00 - 15:00 -> weightage: 50%

4: 13:00 - 14:00 -< weightage: 100%

разбиение интервала 3 вызвано пересечением с интервалом 4 между 13:00 и 14:00.

sql-сервер - ms-sql 2008.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 26 марта 2010

Если я понимаю, что вы пытаетесь сделать правильно, разве ваш ожидаемый результат не должен быть

1: 10:00 - 12:00 -> weightage: 50%
2: 10:00 - 12:00 -> weightage: 50%

3.1: 12:00 - 13:00 -> weightage: 1oo%
3.2: 13:00 - 14:00 -> weightage: 50%
3.3: 14:00 - 15:00 -> weightage: 50%

4: 13:00 - 14:00 -< weightage: 50%

, поскольку 13: 00-14: 00 используется дважды?

...