![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Potrzebuję wykonać takie zapytanie do bazy: Z rekordów od teraz wstecz o 1440 minut wyszukaj rekordy, które po sobie miały wartość 0. Jeśli znajdzie zwróci true. Dla zobrazowania. 2018-03-04 13:30:00 1 2018-03-04 13:31:00 1 2018-03-04 13:32:00 1 2018-03-04 13:33:00 0 | 2018-03-04 13:34:00 0 | 2018-03-04 13:35:00 0 | 2018-03-04 13:36:00 0 | 2018-03-04 13:37:00 0 | Tu znalazł 10 rekordów po sobie więc zwraca TRUE 2018-03-04 13:38:00 0 | 2018-03-04 13:39:00 0 | 2018-03-04 13:40:00 0 | 2018-03-04 13:41:00 0 | 2018-03-04 13:42:00 0 | 2018-03-04 13:43:00 1 2018-03-04 13:44:00 1 2018-03-04 13:45:00 0 | 2018-03-04 13:46:00 0 | Ale tu już nie było 10 po sobie więc je pomija. 2018-03-04 13:47:00 1 2018-03-04 13:48:00 1 Nie mam pojęcia jak się zabrać za takie zapytanie Proszę o pomoc bardziej doświadczonych. Na razie mam tylko do wyszukiwania ile razy było 0
Ten post edytował topcio 4.03.2018, 13:45:40 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Żeby wyjaśnić, to od środka:
To zapytanie ponumeruje grupy. Grupa to zakres od wybranej godziny do ostatniej w puli. Czyli pierwsza grupa to rekordy od 0 do N, druga od 1 do N, trzecia od 2 do N, itd.:
Teraz dodajemy licznik zmieniający się w ramach grupy. Licznik się przyda, bo chcemy wybrać z każdej grupy 10 rekordów. Nie możemy użyć aliasu grupa w warunkach, więc żeby go nie powtarzać, to obudowujemy w zapytanie:
Tu już możemy zgrupować grupy wybierając z każdej tylko rekordy od numeru 1 do 10 i sumując ilość 0. To jest ostateczne zapytanie, które pokazuje ilość 0 od danej godziny włącznie + 9 kolejnych rekordów w przód:
Gdybyś miał ciągłe godziny, to całość byłaby znacznie prostsza. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 01:16 |