Опыт написания SQL запросов
Что проверяют
Не терминологию, а глубину: пишете ли вы запросы сами или читаете чужие. Проверяется рассказом про конкретные задачи, а следом почти всегда даётся задача на соединение и агрегацию.
Как отвечать
Отвечайте не списком ключевых слов, а через задачи. Рамка: где писали, на какой базе, какого объёма данные, что именно доставали.
> «SQL пишу и руками, и через EF Core. Простое закрываю LINQ, тяжёлое пишу запросом: витрины и отчёты с оконными функциями. > > Из последнего: отчёт по продажам собирался тридцать секунд, в плане был последовательный просмотр большой таблицы. Разложил на CTE, добавил составной индекс по (client_id, created_at), стало полторы секунды».
Что стоит назвать, если действительно делали: типы соединений и поведение LEFT против INNER на строках без пары, агрегацию с GROUP BY и HAVING, оконные функции (ROW_NUMBER, LAG, SUM OVER), подзапросы и CTE, чтение плана через EXPLAIN ANALYZE.
Где спотыкаются
Говорят «уверенный уровень» и не могут вспомнить ни одного своего запроса.
Путают WHERE и HAVING. Первое фильтрует строки до группировки, второе группы после неё.
Не знают, что COUNT(*) и COUNT(колонка) считают разное: второй пропускает NULL.
Никогда не открывали план запроса, а на вопрос «как ускорить» отвечают «добавить индекс», не уточняя какой и почему именно он поможет.