← Alle AufgabenSQL · Junior

Alle Kunden und die Zahl ihrer Bestellungen

Liste jeden Kunden mit der Zahl seiner Bestellungen auf: Spalten name und orders_count. Kunden ohne Bestellungen müssen ebenfalls im Ergebnis stehen, mit null.

Wer am meisten bestellt hat, zuerst, und bei gleicher Anzahl nach Namen. Namen können sich wiederholen: das sind verschiedene Kunden.

Tabellen

CREATE TABLE customers (
  id   int PRIMARY KEY,
  name text NOT NULL
);

CREATE TABLE orders (
  id          int PRIMARY KEY,
  customer_id int NOT NULL REFERENCES customers (id),
  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 customers VALUES (1, 'Ann'), (2, 'Bob'), (3, 'Cid');
    INSERT INTO orders VALUES (1, 1, 10.00), (2, 1, 20.00), (3, 2, 5.00);
  2. -- nobody has ordered yet
    INSERT INTO customers VALUES (1, 'Ann'), (2, 'Bob');
  3. -- two customers with the same name
    INSERT INTO customers VALUES (1, 'Ann'), (2, 'Ann'), (3, 'Zed');
    INSERT INTO orders VALUES (1, 1, 10.00), (2, 2, 20.00), (3, 2, 30.00);