pomoc w napisaniu zapytania

pomoc w napisaniu zapytania
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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:

Kopiuj
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.

RI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
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:

Kopiuj
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.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
2

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

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.