Я пытаюсь запросить таблицу истории подключений в почасовом интервале, каждый час - продолжительность соединения.
create table sessionHistory (
_id integer PRIMARY KEY autoincrement,
modified integer,
ip text,
...
started integer,
ended integer
);
У каждого начала соединения есть дата начала, а когда оно закончено, я помещаю«конечная» дата, как в эпоху Unix.
Я могу сгруппировать их, используя следующий запрос:
select strftime('%H', started, 'unixepoch') HOUR_,
sum(ended-started) TOTAL_TIME_
from sessionHistory
where ip='123.123.123.123' and ended!=0
group by strftime('%H', started, 'unixepoch')
Теперь я также хочу включить в каждый час сеансвремя, которое еще продолжается (закончено = 0).
Например, в час 1 соединение началось и закончилось с продолжительностью 35 секунд.В час 2 соединение началось незадолго до перехода в час 3, с поворотом 10 секунд, и прекратилось через 10 секунд после превращения в час 3.
Это означает, что запрос должен возвращать что-то вроде часа 1 =>35, час 2 => 10, час 3 => 10. Более того, если соединение все еще установлено (окончено = 0), я хочу, чтобы текущий час содержал данные для начала «сейчас», которые будут накапливаться в относительнойhour.
Присоединение к двум запросам sqlite не будет отвечать последней спецификации, так как всегда будет возвращать «сейчас» - «начато», даже если продолжительность сеанса превышает 1 час.