O desafio dava uma tabela chamda Employee
no formato:
+-------------+------+
| Column Name | Type |
+-------------+------+
| id | int |
| salary | int |
+-------------+------+
E tinha como jetivo retornar o segundo maior salário distinto. Caso não houvesse um segundo maior salário, o valor retornado deveria ser NULL
.
A solução implementada foi a seguinte:
SELECT
COALESCE(
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1),
NULL) AS SecondHighestSalary
;
Meu raciocinio foi primeiramente ordenar(ORDER BY
) esses dados por salary
e de forma descendente(DESC
). Com os salarios vindo do maior pro menor usei LIMIT 1
para trazer apenas um resultado junto com OFFSET 1
para nao contar o primeiro resultando e assim me trazer o segundo maior salario.
Para contornar o problema de quando não tiver um segundo salario para retornar, usei COALESCE(..., NULL)
para garantir que, nesse caso, o resultado seja NULL
.