pomoc w napisaniu zapytania

0

Witam, Silnik bazodanowy-SQL Lite. Mam napisane takie zapytanie, które wyciaga z bazy średnia temperaturę w styczniu pogrupowana wg lal. Tak wyglada samo zapytanie:

select year, month, round(avg(temperature),2) as average_january
from station_data
where year >- 1990 and month = 1
group by year;

A to jego wyniki:
screenshot-20200317204052.png

I teraz chciałbym do tego zapytania dorzucić kolumnę, która liczyłaby trend jeśli chodzi o tę średnia temperaturę. Tzn. ma liczyć tak: średnia temperatura z miesaca bieżacego minus średnia temperatura z miesiaca poprzedniego. I to powinna działać, jeśli się wstawi w klauzuli where, to powinien liczyć miesiac do miesaca bez względu jaki to jest miesiac. Natomiast jeśli się wstawi np. styczeń w where, to powinien policzyć np. różnicę stycznia 1951 r. do stycznia 1950 r. Mam nadzieję, że wiadomo mniej więcej o co chodzi.

0

Przyjąłem, że Twoja tabela wynikowa to ta użyta do testów "test" (będąca fizycznie w bazie - u mnie).
Zapytanie, które liczy to co chcesz będzie wyglądać jakoś tak:

select test_next.average_january - test.average_january 
from test 
inner join test as test_next 
on test_next.rowid = test.rowid + 1;

Jakoś sobie to połączysz z tym co masz.

2

Zależy na jakim wyniku ci zależy:
https://www.db-fiddle.com/f/2LkcFET15E93x6XJr1kLvB/0

0

Jeśli chodzi o to pierwsze zapytanie, to pojawia się taki bład przy wywoływaniu:

screenshot-20200319220701.png

W którymś miejscu zapytania chyba nie został otwarty nawias

Jeśli chodzi o drugie zapytanie, to jest wszystko super . Liczy rok do roku jeśli jest policzona średnia temperatura dla stycznia. Jeśli jest przerwa więcej niż rok, to wtedy nie liczy i tak jest prawidłowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1