Одним запросом никак не могу сделать.
Пока получилось следующее:
Код:
CREATE TEMPORARY TABLE tmp
SELECT t1.id, t1.s, t1.t, MIN(t2.t) AS t2
FROM test t1
INNER JOIN test t2
ON t1.s = t2.s && t1.t < t2.t && (t2.t - t1.t) <= 7
GROUP BY t1.t
ORDER BY t1.s, t1.t
Запрос формирует временную таблицу формата:
id | s | t | t2
где t2 - "ближайшее поле"
в таблице присутствуют только записи с расстоянием между t и t2 <= 7
Остаётся только посчитать:
Код:
SELECT COUNT(id) AS num FROM tmp GROUP BY s
В MySQL АФАИК вложенных запросов нет.
Может кто додумает до одного.
P.S. ORDER BY - для наглядности, в рабочей версии не нужны, естественно.