← Alle AufgabenSQL · Middle

Zweithöchstes Gehalt

Liefere das zweithöchste unterschiedliche Gehalt als eine Zeile mit einer Spalte second_salary. Gibt es keines (alle Gehälter sind gleich oder die Tabelle ist leer), muss das Ergebnis eine Zeile mit NULL sein, nicht null Zeilen.

Tabellen

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

Tests (4)

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 employees VALUES (1, 'Ann', 7000), (2, 'Bob', 9000), (3, 'Cid', 5000);
  2. -- the top salary appears twice
    INSERT INTO employees VALUES (1, 'Ann', 9000), (2, 'Bob', 9000), (3, 'Cid', 6000);
  3. -- only one distinct salary: the answer is NULL
    INSERT INTO employees VALUES (1, 'Ann', 5000), (2, 'Bob', 5000);
  4. -- empty table: still one row with NULL
    SELECT 1;