← 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
);Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
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).
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');
-- 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');
-- 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');