← Alle AufgabenSQL · Junior

Zählen und summieren nach Status

Zähle die Bestellungen nach Status: Spalten status, orders (die Anzahl) und revenue (die Summe von total).

Status mit den meisten Bestellungen zuerst, und bei gleicher Anzahl nach Statusname.

Tabellen

CREATE TABLE orders (
  id          int PRIMARY KEY,
  customer_id int NOT NULL,
  status      text 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, 10, 'paid', 100.00),
      (2, 11, 'paid', 50.50),
      (3, 10, 'cancelled', 20.00),
      (4, 12, 'paid', 10.00),
      (5, 13, 'pending', 75.00);
  2. -- equal counts: sorted by status
    INSERT INTO orders VALUES
      (1, 1, 'shipped', 10.00),
      (2, 2, 'paid', 20.00),
      (3, 3, 'shipped', 30.00),
      (4, 4, 'paid', 40.00);
  3. -- no orders at all
    SELECT 1;