Nie jest do końca jasne, co ma zrobić w zapytaniu , ale sedno twojego pytania skłania mnie do zasugerowania, żebyś przyjrzał się arytmetyce modularnej:w SQL a % b
zwraca pozostałość kiedy a
jest dzielona przez b
- jeśli nie ma reszty (np. a % b =0
), a następnie a
musi być dokładną wielokrotnością z b
.
W twoim przypadku myślę próbujesz znaleźć zdarzenia, w których czas między początkiem zdarzenia a danym literałem jest dokładną wielokrotnością interwału zdarzenia:to znaczy (literał - event_start) % event_interval =0
. Jeśli jest niezerowe, wartością jest czas do następnego wystąpienia po literal
(a zatem, aby ustalić, czy to następne wystąpienie nastąpi w pewnym okresie czasu, powiedzmy dnia, można by sprawdzić, czy reszta jest mniejsza niż taka stała, np. (literal - event_start) % event_interval <86400 ).
Jeśli to nie jest to, czego szukasz, wyjaśnij dokładnie, co ma osiągnąć Twoje zapytanie.