← Wszystkie zadaniaSQL · Middle

Druga najwyższa pensja

Zwróć drugą najwyższą różną pensję jako jeden wiersz z jedną kolumną second_salary. Jeśli takiej nie ma (wszystkie pensje są równe lub tabela jest pusta), wynikiem musi być jeden wiersz z NULL, a nie zero wierszy.

Tabele

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

Testy (4)

Każdy test wypełnia tabele własnymi danymi i porównuje wynik twojego zapytania z oczekiwanym: te same kolumny (nazwy i kolejność) i te same wiersze w tej samej kolejności, więc ORDER BY ma znaczenie. Zapytanie działa w prawdziwym PostgreSQL prosto w przeglądarce; pierwsze uruchomienie go pobiera (około 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;