SQL: максимальное число с единственным вхождением

Сначала оставьте числа, встречающиеся ровно один раз, затем возьмите MAX. Внешняя агрегация вернёт NULL, если подходящих чисел нет.

Короткий ответ

Что ответить на собеседовании

Сначала оставьте числа, встречающиеся ровно один раз, затем возьмите MAX. Внешняя агрегация вернёт NULL, если подходящих чисел нет.

Подробный разбор

Ответ с пояснениями

Условие

Условие

Надо: Найдите максимальное одинокое число. Если таких чисел нет, выведите null (пустоту)

Пример 1: Input: MyNumbers table: +-----+ | num | +-----+ | 8 | | 8 | | 3 | | 3 | | 1 | | 4 | | 5 | | 6 | +-----+

Output: +-----+ | num | +-----+ | 6 | +-----+

Пример 2: Input: MyNumbers table: +-----+ | num | +-----+ | 8 | | 8 | | 7 | | 7 | | 3 |

Ответ

Сначала оставьте числа, встречающиеся ровно один раз, затем возьмите MAX. Внешняя агрегация вернёт NULL, если подходящих чисел нет.

SELECT MAX(num) AS num
FROM (
    SELECT num
    FROM MyNumbers
    WHERE num IS NOT NULL
    GROUP BY num
    HAVING COUNT(*) = 1
) AS singles;

В первом примере остаются 1, 4, 5 и 6, поэтому ответ — 6. Второй пример в условии обрезан: если перечисленные строки исчерпывают таблицу, результат будет 3. NULL получается только при отсутствии чисел с единственным вхождением.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее