Каверзные вопросы по SQL, которые могут застать врасплох
Кажется, что знаешь SQL, потому что умеешь писать JOIN, оконные функции и сложные запросы? А что, если на собеседовании тебя попросят не написать код, а объяснить, почему он работает именно так?
Собрала вопросы, которые могут встретиться на собеседовании, летсго:
Почему NULL = NULL не возвращает TRUE?
Можно ли написать LEFT JOIN, а в итоге получить результат как после INNER JOIN? Как так вообще получается?
В чём разница между COUNT(*) и COUNT(column)? Почему они могут вернуть разные числа?
Зачем нужен UNION ALL, если есть обычный UNION? И почему иногда первый вариант предпочтительнее?
Чем WHERE отличается от HAVING? Можно ли использовать их взаимозаменяемо?
В чём разница между ROW_NUMBER(), RANK() и DENSE_RANK()? Почему при одинаковых значениях они ведут себя по-разному?
Почему NOT IN иногда не находит ни одной строки, хотя кажется, что должен?
Если внутри запроса есть ORDER BY, почему итоговый результат всё равно может прийти в другом порядке?
Чем отличаются DELETE, TRUNCATE и DROP?
Индекс всегда ускоряет запросы?
Почему после JOIN сумма выручки может внезапно увеличиться в несколько раз, хотя исходные данные не менялись?
Почему нельзя просто посчитать среднее от средних значений и получить правильный общий результат?
Чем ROWS отличается от RANGE в оконных функциях? Почему накопительная сумма иногда меняется сразу на нескольких строках?
Ну что, коллеги, готовим пост с правильными ответами? 🤩