Мой оператор Presto SQL объединяет несколько строк, каждая из которых имеет дату и время, в одну строку с массивом этих дат (все остальные свойства одинаковы для этих строк).Таким образом, я получаю что-то вроде этого (есть произвольное количество столбцов, это упрощено):
id | timestamps
1 [ 2018-10-01 00:00:00.000, 2018-10-01 00:00:00.000, 2018-10-01 01:00:00.000, 2018-10-01 01:00:00.000, 2018-10-01 01:00:00.000]
2 [ 2018-10-01 00:00:00.000, 2018-10-01 01:00:00.000, 2018-10-01 01:00:00.000]
Я хочу по существу выполнить три шага, я хочу подсчитать вхождения каждой даты в строкетак что может быть что-то вроде:
id | timestamps
1 [ { 2018-10-01 00:00:00.000 : 2}, { 2018-10-01 01:00:00.000 : 3}]
2 [ { 2018-10-01 00:00:00.000 : 1}, { 2018-10-01 01:00:00.000 : 2}]
Затем, учитывая начало и конец, например, 2018-10-01 00: 00: 00.00 до 2018-10-01 02: 00: 00.00, заполните все пропущенныевременные метки со счетом 0
id | timestamps
1 [ { 2018-10-01 00:00:00.000 : 2}, { 2018-10-01 01:00:00.000 : 3}, { 2018-10-01 02:00:00.000 : 0}]
2 [ { 2018-10-01 00:00:00.000 : 1}, { 2018-10-01 01:00:00.000 : 2}, { 2018-10-01 02:00:00.000 : 0}]
А затем я хочу указать процент, например 60%, и вычислить максимальный счетчик, который встречается по крайней мере так часто, и сохранить его в виде столбца для строки.Таким образом, это будет выглядеть так:
id | timestamps | col3
1 [ { 2018-10-01 00:00:00.00 : 2}, { 2018-10-01 01:00:00.000 : 3}, { 2018-10-01 02:00:00.000 : 0}] 2
2 [ { 2018-10-01 00:00:00.000: 1}, { 2018-10-01 01:00:00.000 : 2}, { 2018-10-01 02:00:00.000 : 0}] 1
Для первой строки 3 происходит только в 33% случаев, а 2 - в 66% случаев (для счета 3 он включает счет 2,и счет 1), поэтому, учитывая порог 60%, число, которое я хочу захватить, равно 2. Во втором ряду 2 встречается только 33% времени, а 1 - 66% времени, поэтому числоперехват равен 1. Если в качестве порога для второй строки было указано 30%, я бы перехватил 2.
Возможны ли какие-либо из этих шагов в SQL?Если да, то какие функции / механизмы будут использоваться для выполнения этих шагов?