TGViewer
Продуктовый взгляд | Аналитика данных Продуктовый взгляд | Аналитика данных @prodanalysis · 2.29K subscribers
Post #83 3.38K
Это должен знать каждый аналитик, чтобы пройти собеседование в Big Tech. Сегодня разберём несколько вопросов по SQL с реальных собеседований в топовые IT компании, если вы с чем-то не справились это знак пойти повторять SQL

1. В чём разница между WHERE и HAVING в SELECT-запросе?

Ответ: WHERE фильтрует строки до группировки, HAVING фильтрует уже сгруппированные данные.
Например есть задача "Какой запрос SQL вернёт максимальную зарплату сотрудников для каждого отдела, где средняя з/п по отделу превышает 5000?". Сначала нужно сгруппировать по отделам, а затем в HAVING отфильтровать по средней з/п, если это сделать в WHERE будет ошибка.

2. Допустим в таблице есть 3 столбца user_id, salary, employees. В чём разница между count(*) и count(employees)?

Ответ: count(*) считает все строки таблицы, а count(employees) считает только те строки, где в столбце employees значение не NULL


3. Как в PostgreSQL работать с NaN для числовых типов: чем он отличается от NULL и что вернут COALESCE(NaN::numeric, 0) и NULLIF(NaN::numeric, NaN::numeric)?

Ответ: NaN в PostgreSQL — это реальное числовое значение (Not-a-Number), а не отсутствие данных: оно хранится в ячейке, участвует в арифметике и сравнениях. NULL значит, что значения нет вовсе
Поэтому count(..), avg(..) не посчитают ячейки с NULL, но учтут ячейки с NaN

COALESCE(value [, ...]) возвращает первый ненулевой аргумент. Поэтому COALESCE(NaN::numeric, 0) вернёт сам NaN (первый аргумент не NULL)
NULLIF(value1, value2) возвращает NULL, если value1 = value2, иначе вернёт value1. Поэтому NULLIF(NaN::numeric, NaN::numeric) вернёт NULL

4. Допустим в двух разных таблицах есть колонки user_id и employees_id. В каком случае JOIN выполнится быстрее, если обе колонки будут типа numeric(11) или varchar(10)?

Ответ: numeric(11) быстрее, потому что значения хранятся как упорядоченные числа фиксированной длины и сравнение двух чисел — это одна бинарная операция. varchar(10) каждый ключ хранит длину и символы, соответственно для сравнения нужно пройтись посимвольно, что медленнее, а сами индексы больше (нужно читать больше страниц и в рабочем кэше помещается меньше записей).
Если БД очень важна использование числового тип данных может существенно ускорить работу запросов.

5. Какой компонент отвечает за оптимизацию и преобразование SQL-запроса в план выполнения?

Ответ: Query Processor (оптимизатор запросов)
Оптимизатор учитывает такие факторы, как количество записей, наличие индексов, партиций и т.д. На основе этого он строит план EXPLAIN — последовательность операций, которые
выполняет БД для получения требуемого в запросе результата.

6. Какой компонент восстанавливает базу после сбоя?

Ответ: Recovery Manager
Вместе с изменением данных ведется ещё и журнал этих изменений. Recovery manager читает журнал предзаписи WAL, повторно выполняет все зафиксированные изменения после контрольной точки (redo) и откатывает изменения незавершённых транзакций (undo)

7. Что такое партиции и где они хранятся?

Ответ: партиционирование — это логическое разделение данных на части (партиции) по заданным критериям, используется в основном для больших таблиц и позволяет избежать полного сканирования таблицы. Может располагаться во всех сегментах


@ProdAnalysis
  • 👍 9
  • ❤ 6
More from @prodanalysis
  1. Sep 27, 2026Ты поступишь в ШАД Старт набора на наши ШАДовские курсы: без воды и лишней теории, 3 месяц…
  2. Sep 22, 2026Яндекс изменил отбор на аналитиков Раньше процесс состоял из технической секции, алгособес…
  3. Sep 18, 2026Хороший маркетинг обязан нравиться всем? Кейс Сидни Суини говорит, что нет Последние пару…
  4. Sep 16, 2026Если собираетесь на собеседование — держите полезную подборку Хотим поделиться каналом «Ги…
  5. Sep 14, 2026Что происходит с ML после того, как модель обучена Рекомендуем канал Data New Gold. Владим…
  6. Sep 14, 2026Товарищи, Поступашкам нужны контент мейкеры в основной канал по аналитике и другим дисципл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →