TGViewer
DATA SUETIST DATA SUETIST @data_suetistka · 985 subscribers
Post #95 2.45K
Эти три буквы никого не оставляют равнодушными.
Ни одно собеседование на дата аналитика/дата инженера/мл инженера не проходит без блока про SQL. Вы можете работать в стартапе из трех человек, пользоваться таблицей excel из 10 строчек, но понимать как выполняются запросы из базы данных все равно надо.
Разберем топ вопросов на знание SQL, которые чаще всего задают на собеседованиях.
Я собрала в этот топ свой опыт и опыт коллег, которые недавно проходили собеседования.
❤️ Порядок выполнения операторов в запросе
Хороший вопрос на понимание работы запросов из базы данных.

1. FROM - выбор таблицы
2. WHERE - фильтрация строк
3. GROUP BY - группировка
4. Агрегатные функции (COUNT, SUM, AVG)
5. HAVING - фильтрация групп
6. SELECT - выбор полей
7. ORDER BY - сортировка
Обычно хотят услышать такой ответ, но будьте готовы ответить, что на самом деле последний в списке LIMIT - отбирает конкретное количество строк в выводе.

❤️ Отличие having от where
Честно вам скажу, я долгое время сама плавала в понимании этого вопроса.
Обычно просто отчеканивала выученный ответ и все, но недавно наконец до меня дошло, попробую объяснить своими словами.
Where - это просто оператор фильтрации. Мы поставили фильтр зарплата больше 100 рублей, и в таблице остались только те строки, которые удовлетворяют этому условию.
Having же фильтрует не весь датафрейм, а только результат группировки. Например, мы сначала группируем пользователей по отделам, считаем среднюю зарплату, и только потом мы накладываем условие что средняя зарплата больше 100 рублей.
Обратите внимание, что where стоит перед having и groupby в порядке выполнения запроса, поэтому если вы сразу поставите фильтр с помощью where, то эти значения не будут учтены при группировке.

WHERE
· Фильтрует строки ДО группировки
· Работает с отдельными записями
· Не может использовать агрегатные функции
· Выполняется раньше GROUP BY

HAVING
· Фильтрует группы ПОСЛЕ группировки
· Работает с результатами агрегации
· Обязательно использует агрегатные функции
· Выполняется после GROUP BY

Примеры:

WHERE (фильтрация до группировки):
SELECT department, AVG(salary)
FROM employees
WHERE salary > 30000 -- фильтруем сотрудников с з/п > 30k
GROUP BY department;

HAVING (фильтрация после группировки):
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000; -- фильтруем отделы со средней з/п > 50k

Комбинированное использование
SELECT department, COUNT(*) as emp_count, AVG(salary)
FROM employees
WHERE hire_date > '2020-01-01' -- только новейшие сотрудники
GROUP BY department
HAVING AVG(salary) > 40000 -- только отделы со средней з/п > 40k
AND COUNT(*) > 3; -- и более 3 сотрудников

Типичные ошибки:
Неправильно:
SELECT department, AVG(salary)
FROM employees
WHERE AVG(salary) > 50000 -- Ошибка! WHERE не может использовать агрегатные функции
GROUP BY department;

Правильно:
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000; -- Корректно

💜 Оконные функции
Что такое? Отличия от groupby? Какие бывают? Вопросы по агрегирующим функциям зависят от места, куда вы собеседуетесь.
Обо всем по порядку.
Оконные функции позволяют производить вычисления над "окном" данных — группой строк, связанных с текущей строкой, при этом сохраняя все исходные строки в результате.

Ключевые особенности:

· Не группируют данные (все строки сохраняются)
· Используют OVER() clause для определения "окна"
· Работают с контекстом текущей строки

Синтаксис:
function_name() OVER (
PARTITION BY column1, column2...
ORDER BY column3, column4...
frame_clause
)

Основные компоненты:

1. PARTITION BY — разделяет данные на группы (аналог GROUP BY, но без свертывания)
SELECT name, department, salary,
AVG(salary) OVER (PARTITION BY department) as avg_department_salary
FROM employees;

2. ORDER BY — определяет порядок данных внутри окна
SELECT name, salary,
SUM(salary) OVER (ORDER BY salary) as running_total
FROM employees;

=>
  • ❤ 10
  • 🔥 8
More from @data_suetistka
  1. Sep 18, 2026Как вы переживаете то, что вы не самый лучший во всем? В эпоху соцсетей у нас появилось не…
  2. Sep 17, 2026⚡ Почему аналитики данных так востребованы и как стать аналитиком в 2026 году? Большинство…
  3. Sep 13, 2026Прошла первая учебная неделя... Поделюсь с вами своими впечатлениями о начавшейся учебе. С…
  4. Sep 5, 2026Доброй субботы, подписчики! Сегодня пытаюсь выбрать себе вузовское расписание на семестр.…
  5. Sep 3, 2026Какой навык нужен для международной карьеры? Я часто вижу одну и ту же ситуацию, когда чел…
  6. Sep 1, 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 →