← Alle AufgabenSQL · Middle

Kunden, die 2024 über 1000 ausgegeben haben

Liste die Kunden auf, deren Bestellungen aus 2024 zusammen mehr als 1000 ergeben: Spalten name und spent (die Summe für 2024). Bestellungen aus anderen Jahren zählen nicht. Wer mehr ausgegeben hat, zuerst, und bei gleicher Summe nach Namen.

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,
  created_at  date 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, 800.00, '2024-02-10'),
      (2, 1, 400.00, '2024-11-05'),
      (3, 2, 1500.00, '2024-06-01'),
      (4, 3, 900.00, '2024-03-03');
  2. -- 2023 and 2025 orders don't count
    INSERT INTO customers VALUES (1, 'Ann'), (2, 'Bob');
    INSERT INTO orders VALUES
      (1, 1, 900.00, '2023-12-31'),
      (2, 1, 200.00, '2024-01-01'),
      (3, 2, 600.00, '2024-12-31'),
      (4, 2, 600.00, '2025-01-01'),
      (5, 2, 500.00, '2024-07-15');
  3. -- exactly 1000 is not more than 1000
    INSERT INTO customers VALUES (1, 'Ann'), (2, 'Bob');
    INSERT INTO orders VALUES
      (1, 1, 1000.00, '2024-05-05'),
      (2, 2, 1000.01, '2024-05-05');