Я думаю, что будет очень сложно разделить количество запросов между несколькими перекрывающимися событиями исключений. Особенно если учесть, что нет способа точно приписать запись в журнале к правильному событию исключения при множественном перекрытии.
С учетом вышесказанного, если значение credit просто будет использоваться в качестве меры, с помощью которой можно определить наиболее важные проблемы, которые необходимо исправить, то я на самом деле не думаю, что это необходимо. Вместо этого, если вы просто приписываете всю сумму в равной степени каждому перекрывающемуся событию, показатели будут по-прежнему репрезентативными.
Например, взять ваш пример:
Exception A (450 / 2) + 50 = 275
Exception B (450 / 2) + 100 = 325
// Difference 50 requests
Принимая во внимание, что если вы назначите сумму обоим событиям исключения:
Exception A 450 + 50 = 500
Exception B 450 + 100 = 550
// Difference 50 requests
Если вы хотите пройти этот маршрут, вы можете использовать следующий запрос:
SELECT e.*, SUM(l.requests) AS credit
FROM exceptions e
INNER JOIN logs l
ON l.date BETWEEN e.date AND DATE_ADD(e.date, INTERVAL e.duration MINUTE)
GROUP BY e.id;
http://sqlfiddle.com/#!9/67dfc8/1