Это проблема пробелов и островов. Вы хотите сгруппировать последовательные записи, принадлежащие одному и тому же System
.
Вы можете решить это с помощью оконных функций (которые доступны в presto):
select min(system) system, min(date) date, count(*) nb_records
from (
select
t.*,
row_number() over(order by date, hour) rn1,
row_number() over(partition by system order by date, hour) rn2
from mytable t
) t
group by rn1 - rn2
order by min(rn1)
Я настоятельно рекомендую объединить столбцы date
и time
в уникальный столбец всоответствующий тип даты / времени. Разделение этой информации на два столбца усложняет ее использование.
В этой Db Fiddle с примерами данных запрос возвращает:
system | date | nb_records
:----- | :------------------ | ---------:
Word | 28/08/2019 00:00:00 | 2
Excel | 28/08/2019 00:00:00 | 1
Word | 28/08/2019 00:00:00 | 1
Ppt | 28/08/2019 00:00:00 | 2