Met voortschrijdend gemiddelde of voortschrijdend gemiddelde kunt u het gemiddelde berekenen over een voortschrijdende periode, zoals de afgelopen 7 dagen. Het berekenen van het voortschrijdend gemiddelde in de loop van de tijd geeft een vloeiendere trend in vergelijking met het bijhouden van dagelijkse cijfers. Dit is de SQL-query om het voortschrijdend gemiddelde in PostgreSQL te berekenen.
Hoe het voortschrijdend gemiddelde in PostgreSQL te berekenen
Hier leest u hoe u het voortschrijdend gemiddelde in PostgreSQL kunt berekenen. Stel dat u de volgende tabel heeft
postgres=# create table sales(order_date date,sale int); postgres=# insert into sales values('2020-04-01',210), ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230), ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25), ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250); postgres=# select * from sales; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 25 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Bonus Lezen:CSV-bestand importeren in PostgreSQL
Stel dat u het voortschrijdend gemiddelde in PostgreSQL voor de afgelopen 5 dagen wilt berekenen. Met PostgreSQL kunt u het voortschrijdend gemiddelde berekenen met behulp van Window Functions. Dit is de vraag om het voortschrijdend gemiddelde in PostgreSQL voor de afgelopen 5 dagen te berekenen. We zullen het in detail bekijken
SELECT a.order_date,a.sale, AVG(a.sale) OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS avg_sales FROM sales a ; order_date | sale | avg_sales ------------+------+---------------------- 2020-04-01 | 210 | 210.00 2020-04-02 | 125 | 167.50 2020-04-03 | 150 | 161.66 2020-04-04 | 230 | 178.75 2020-04-05 | 200 | 183.00 2020-04-06 | 25 | 146.00 2020-04-07 | 215 | 164.00 2020-04-08 | 300 | 194.00 2020-04-09 | 250 | 198.00 2020-04-10 | 220 | 202.00
In de bovenstaande zoekopdracht berekent de AVG-functie de gemiddelde waarde van verkoop kolom. Als we het gebruiken met de vensterfunctie OVER, berekent het alleen het gemiddelde voor het door ons gedefinieerde tijdvenster.
Om het voortschrijdend gemiddelde in PostgreSQL te berekenen, sorteren we de rijen eerst chronologisch met behulp van de ORDER BY-clausule. Vervolgens definiëren we ons venster voor het berekenen van het gemiddelde, met behulp van RIJEN TUSSEN 4 VORIGE EN HUIDIGE RIJ. Het betekent dat voor elke rij het gemiddelde wordt berekend voor alleen de huidige rij en de voorgaande 4 rijen. Dus voor elke rij worden alleen de waarden van de afgelopen 5 dagen in aanmerking genomen.
U kunt ook filters toevoegen en gemiddelde waarden afronden door de WHERE-clausule en ROUND-functie toe te voegen in de bovenstaande SQL-query.
SELECT a.order_date,a.sale, round(AVG(a.sale) OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW),2) AS avg_sales FROM sales a WHERE condition;
Bonus lezen:bereken de groei van maand tot maand in PostgreSQL
Het 30-daags voortschrijdend gemiddelde berekenen in PostgreSQL
Evenzo, als u 30-daags voortschrijdend gemiddelde in PostgreSQL wilt berekenen, kunt u de bovenstaande zoekopdracht wijzigen door rekening te houden met 29 voorgaande rijen en huidige rij
SELECT a.order_date,a.sale, AVG(a.sale) OVER(ORDER BY a.order_date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW) AS avg_sales FROM sales a ;
Hoe het voortschrijdend gemiddelde van 3 maanden in PostgreSQL te berekenen
Als u dagelijkse verkoopgegevens heeft en het voortschrijdend gemiddelde over 3 maanden in PostgreSQL wilt berekenen, kunt u de bovenstaande zoekopdracht wijzigen door rekening te houden met 89 voorgaande rijen en huidige rij
SELECT a.order_date,a.sale, AVG(a.sale) OVER(ORDER BY a.order_date ROWS BETWEEN 89 PRECEDING AND CURRENT ROW) AS avg_sales FROM sales a ;
Stel dat u maandelijkse gegevens heeft in plaats van dagelijkse gegevens en het voortschrijdend gemiddelde voor de afgelopen 3 maanden wilt berekenen
postgres=# create table monthly_sales(order_month date,sale int); postgres=# insert into monthly_sales values('2019-12-01',120), ('2020-01-30',250),('2020-02-28',150),('2020-03-31',300), ('2020-04-30',200),('2020-05-31',200),('2020-06-30',250), ('2020-07-31',150),('2020-08-31',300),('2020-09-30',200); postgres=# select * from monthly_sales; order_month | sale -------------+------ 2019-12-01 | 120 2020-01-30 | 250 2020-02-28 | 150 2020-03-31 | 300 2020-04-30 | 200 2020-05-31 | 200 2020-06-30 | 250 2020-07-31 | 150 2020-08-31 | 300 2020-09-30 | 200
Bonus Lezen:Retentiepercentage berekenen in SQL
We gebruiken dezelfde logica als hierboven om het voortschrijdend gemiddelde in PostgreSQL te berekenen. Eerst sorteren we rijen chronologisch en gebruiken dan de vensterfunctie OVER om het gemiddelde te berekenen voor voorafgaande 2 rijen en huidige rij .
SELECT a.order_month,a.sale, round(AVG(a.sale) OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) AS avg_sales FROM monthly_sales a ; order_month | sale | avg_sales -------------+------+----------- 2019-12-01 | 120 | 120.00 2020-01-30 | 250 | 185.00 2020-02-28 | 150 | 173.33 2020-03-31 | 300 | 233.33 2020-04-30 | 200 | 216.67 2020-05-31 | 200 | 233.33 2020-06-30 | 250 | 216.67 2020-07-31 | 150 | 200.00 2020-08-31 | 300 | 233.33 2020-09-30 | 200 | 216.67
Bonus lezen:een draaitabel maken in PostgreSQL
U kunt ook filters toevoegen door de WHERE-clausule op te nemen in de bovenstaande SQL-query.
SELECT a.order_month,a.sale, round(AVG(a.sale) OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) AS avg_sales FROM monthly_sales a WHERE condition;
U kunt de bovenstaande query aanpassen om het voortschrijdend gemiddelde in PostgreSQL te berekenen, volgens uw vereisten.
Nadat u het voortschrijdend gemiddelde in PostgreSQL hebt berekend, kunt u een grafiektool gebruiken om het in een lijndiagram uit te zetten en met uw team te delen. Hier is een voorbeeld van een lijndiagram dat voortschrijdend gemiddelde visualiseert, gemaakt met Ubiq.
Als u grafieken, dashboards en rapporten wilt maken vanuit de PostgreSQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen.