Чтобы сделать это на основе множеств (что хорошо для SQL), вам понадобится основанное на множествах представление ваших приращений времени. Это может быть временная таблица, постоянная таблица или производная таблица (то есть подзапрос). Я не слишком знаком с SQLite, и прошло много времени с тех пор, как я работал с UNIX. Временные метки в UNIX - всего # секунды с момента установки даты / времени? Использование стандартной таблицы Календаря (которую полезно иметь в базе данных) ...
SELECT
C1.start_time,
C2.end_time,
T.org,
COUNT(time)
FROM
Calendar C1
INNER JOIN Calendar C2 ON
C2.start_time = DATEADD(dy, 6, C1.start_time)
INNER JOIN My_Table T ON
T.time BETWEEN C1.start_time AND C2.end_time -- You'll need to convert to timestamp here
WHERE
DATEPART(dw, C1.start_time) = 1 AND -- Basically, only get dates that are a Sunday or whatever other day starts your intervals
C1.start_time BETWEEN @start_range_date AND @end_range_date -- Period for which you're running the report
GROUP BY
C1.start_time,
C2.end_time,
T.org
Таблица календаря может принимать любую форму, которую вы хотите, так что вы можете использовать метки времени UNIX в ней для start_time и end_time. Вы просто предварительно заполняете его всеми датами в любом возможном диапазоне, который вы можете использовать. Даже переход с 1900-01-01 на 9999-12-31 не будет ужасно большим столом. Это может пригодиться для большого количества запросов типа отчетов.
Наконец, этот код - T-SQL, поэтому вам, вероятно, потребуется преобразовать DATEPART и DATEADD во все, что эквивалентно SQLite.