Aktywne Wpisy

Pixario +361
Mam przewlekłą chorobę neurologiczną od około 2 lat, napisałem objawy w Groka i wypluł mi że to choroba kręgosłupa w odcinku szyjnym przy kolejnej wizycie zwróciłem na to uwagę lekarzowi ten obśmiał ale nalegałem i skierowanie na MRI dostałem, prześwietleniu okazało się ze mam tą chorobę kurtyna. I tak przez 2 lata byłem leczony tylko objawowo nikt nie szukał przyczyny do tego pragnę dodać że miałem przez to jedna małą operację chirurgiczną


Potrzebuję wyliczyć powiedzmy średnią dla różnych produktów ale założenie jest takie, że średnia dla lutego ma być liczona dla produktów z datą sprzedaży z października i listopada, dla marca z datą sprzedaży listopada i grudnia itd. (zawsze brać pełne 3 i 4 miesiąc wstecz).
Docelowy wynik ma być w formie
DATE PRODUCT AVG
2/1/2024 productA 115.56 liczone na danych z października i listopada
2/1/2024 productB 178.87 liczone na danych z października i listopada
2/1/2024 productC 105.23 liczone na danych z października i listopada
1/1/2024 productA 117.67 liczone na danych z listopada i grudnia
1/1/2024 productB 167.23 liczone na danych z listopada i grudnia
1/1/2024 productC 174.56 liczone na danych z listopada i grudnia
Stan obecny mi wychodzi łatwo, bo używam MONTH(CURRENTDATE), YEAR(CURRENTDATE), DATEADD które wylicza 1 dzień miesiąca 4 miesiące temu i ostatni dzień miesiąca 3 miesiące temu.
Ale jak to zrobić łatwo by było uniwersalne i liczyło mi np dla całego 2023 roku?
Chciałem jako CTE gdzie wpierw mam tabelkę z kalendarzem z którego wybieram tylko 1 dni miesiąca(i wyliczam dla niego 1 dzień miesiąca sprzed 4 miesięcy i ostatni dzień miesiąca sprzed 3 miesięcy) i potem joinuje z tabelą z danymi ale coś nie wychodzi.
Pisane w Snowflake jakby coś to zmieniało
#sql #bazydanych
SELECT
CURRENT_DATE(),
product_name,
Komentarz usunięty przez autora
WITH CTE
AS
Na początku wyliczasz pierwszy dzień każdego miesiąca w roku (łatwiej później obliczyć początek i koniec okresu)
Następnie dla każdego miesiąca obliczasz dwumiesięczne okresy.
A później możesz wykorzystać to do grupowania.
Nie wiem czy wszystko jest obsługiwane
@Rokuto Też dzięki ;) Tak właśnie też próbowałem wczoraj ale coś nie wychodziło tak jak powinno ale może mój błąd