← Alle AufgabenSQL · Senior

Umsatzwachstum von Monat zu Monat

Berechne den Monatsumsatz und das Wachstum gegenüber dem Vormonat: Spalten month (der erste Tag des Monats, Typ date), revenue und growth_pct, die prozentuale Änderung, auf eine Nachkommastelle gerundet (NULL für den ersten Monat). Sortiert nach month.

Zum Beispiel ist 200 → 300 gleich 50.0, und 300 → 150 gleich -50.0.

Tabellen

CREATE TABLE orders (
  id         int PRIMARY KEY,
  created_at date NOT NULL,
  total      numeric(10, 2) NOT NULL
);

Tests (3)

Jeder Test füllt die Tabellen mit eigenen Daten und vergleicht das Ergebnis deiner Abfrage mit dem erwarteten: dieselben Spalten (Namen und Reihenfolge) und dieselben Zeilen in derselben Reihenfolge, ORDER BY zählt also. Die Abfrage läuft in echtem PostgreSQL direkt im Browser; der erste Start lädt es herunter (etwa 5 MB).

  1. INSERT INTO orders VALUES
      (1, '2024-01-05', 100.00), (2, '2024-01-20', 100.00),
      (3, '2024-02-11', 300.00),
      (4, '2024-03-02', 150.00);
  2. -- growth rounded to one decimal place
    INSERT INTO orders VALUES
      (1, '2024-04-01', 300.00),
      (2, '2024-05-15', 400.00),
      (3, '2024-06-30', 401.00);
  3. -- a single month: growth is NULL
    INSERT INTO orders VALUES (1, '2024-09-09', 50.00);