BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по PostgreSQL » Вопросы по SQL и PostgreSQL на собеседовании: ответы и задачи

Вопросы по SQL и PostgreSQL на собеседовании: ответы и задачи

Для подготовки к SQL-собеседованию важно не только воспроизвести определение, но и объяснить результат запроса: что произойдёт с NULL, дубликатами, группировкой и порядком строк. Ниже — вопросы с короткими ответами и три задачи с решениями. Примеры используют синтаксис PostgreSQL; различия диалектов отмечены в ответах.

Начните с JOIN, GROUP BY, NULL и агрегатов, затем переходите к оконным функциям, индексам и транзакциям. Сначала решите задачу самостоятельно, затем сравните результат.

 

18 вопросов по SQL и PostgreSQL с ответами

1. Чем WHERE отличается от HAVING?

WHERE отбирает исходные строки, HAVING — группы после группировки. Условие на сумму группы обычно относится в HAVING.

 

2. Чем INNER JOIN отличается от LEFT JOIN?

INNER JOIN оставляет совпавшие пары. LEFT JOIN сохраняет строки слева без совпадения, дополняя правую часть NULL. Фильтр по правой таблице в WHERE может исключить эти строки.

 

3. Почему JOIN увеличил число строк?

Ключ соединения может быть неуникальным. При связи многие-ко-многим каждая строка соединяется с несколькими строками другой таблицы. Сначала проверьте кратность ключей.

 

4. Чем COUNT(*) отличается от COUNT(column)?

COUNT(*) считает строки, COUNT(column) — строки с ненулевым в смысле NULL значением столбца. Число 0 при этом учитывается.

 

5. Почему column = NULL не работает?

Обычное сравнение с NULL даёт неизвестный результат. Для проверки отсутствия значения используйте IS NULL или IS NOT NULL.

 

6. Чем UNION отличается от UNION ALL?

UNION убирает дубликаты результирующих строк, UNION ALL сохраняет их. Число столбцов и типы соответствующих позиций должны быть совместимы.

 

7. Что такое PRIMARY KEY?

Ограничение уникальности и отсутствия NULL, идентифицирующее строку. Ключ может состоять из нескольких столбцов; у таблицы не более одного PRIMARY KEY.

 

8. INDEX — это ограничение?

Обычный индекс ускоряет определённые способы доступа и сам по себе не задаёт бизнес-ограничение. UNIQUE-индекс дополнительно обеспечивает уникальность. Не путайте DEFAULT с проверкой допустимости значений.

 

9. Что запрещает NOT NULL?

Отсутствие значения NULL. Ноль и пустая строка не являются NULL и сами по себе этим ограничением не запрещены.

 

10. Что гарантирует FOREIGN KEY?

Ссылочную целостность: ненулевой ключ должен соответствовать допустимому ключу в связанной таблице. Ссылка возможна не только на PRIMARY KEY; важны требования СУБД к уникальности.

 

11. Чем оконная функция отличается от GROUP BY?

Оконная функция вычисляет значение по набору связанных строк, сохраняя отдельные строки результата. GROUP BY сворачивает строки в группы.

 

12. Когда использовать ROW_NUMBER, RANK и DENSE_RANK?

ROW_NUMBER нумерует строки; RANK присваивает одинаковый ранг равным значениям с пропусками далее; DENSE_RANK — без пропусков. При равенстве задайте дополнительный порядок, если нужен единственный результат.

 

13. Можно ли откатить TRUNCATE в PostgreSQL?

Да, если окружающая транзакция не зафиксирована. TRUNCATE очищает все строки и берёт сильную блокировку; для части строк нужен DELETE с WHERE.

 

14. Зачем нужен индекс и почему его не использовали?

Индекс имеет стоимость хранения и изменения. Планировщик может предпочесть последовательное чтение, если оно дешевле. Изучите селективность, статистику и план, а не только наличие индекса.

 

15. Что показывает EXPLAIN ANALYZE?

Фактическое выполнение и статистику плана. Команда действительно исполняет запрос; для изменяющих запросов учитывайте побочные эффекты и используйте отдельный стенд.

 

16. Что такое MVCC?

Механизм работы с версиями строк, который позволяет транзакциям читать согласованные снимки. Видимость зависит от уровня изоляции и момента снимка.

 

17. Зачем VACUUM?

В PostgreSQL он обслуживает версии строк и освобождает место для повторного использования, а также решает задачи заморозки идентификаторов транзакций. Обычный VACUUM не равен полному возврату файла таблицы операционной системе.

 

18. Чем CTE отличается от временной таблицы?

CTE задаёт именованный подзапрос в одной SQL-команде. Временная таблица — отдельный объект сеанса. Поведение материализации CTE зависит от запроса и версии СУБД.

 

Задачи: данные, запрос и ожидаемый результат

1. Найдите клиентов без заказов

Нужно сохранить клиента даже при отсутствии строк справа. Все входные данные заданы в запросе:

WITH customers(id) AS (VALUES (1),(2),(3)),
orders(customer_id) AS (VALUES (1),(1),(2))
SELECT c.id
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.customer_id IS NULL
ORDER BY c.id;
-- 3

2. Покажите клиентов с суммой заказов больше 100

WITH orders(customer_id, amount) AS (
  VALUES (1, 80), (1, 40), (2, 90)
)
SELECT customer_id, sum(amount) AS total
FROM orders
GROUP BY customer_id
HAVING sum(amount) > 100
ORDER BY customer_id;
-- 1 | 120

 

Условие WHERE amount > 100 здесь дало бы другой ответ: оно проверяет каждый заказ, а не сумму клиента.

 

3. Найдите последний заказ каждого клиента

WITH orders(id, customer_id, created_at) AS (
 VALUES (10,1,DATE '2026-09-01'),
        (11,1,DATE '2026-09-02'),
        (12,1,DATE '2026-09-02'),
        (13,2,DATE '2026-09-01')
), ranked AS (
 SELECT *, row_number() OVER (
   PARTITION BY customer_id ORDER BY created_at DESC, id DESC
 ) AS rn FROM orders
)
SELECT customer_id, id FROM ranked
WHERE rn = 1 ORDER BY customer_id;
-- 1 | 12
-- 2 | 13

 

Здесь при равной дате выбран больший ID. Это явное учебное правило разрешения равенства, а не доказательство более позднего события.

 

Как проверить готовность к интервью

Для каждого решения назовите ожидаемые строки, объясните работу NULL и дубликатов, предложите альтернативу и обсудите индекс для большого набора данных. Не приписывайте вопросы конкретным компаниям без проверяемого источника.

Для последовательной практики по запросам и устройству СУБД изучите программу курса по PostgreSQL. Короткий разбор удаления данных — в статье TRUNCATE TABLE в PostgreSQL.

 

Документация

  • Ограничения
  • Оконные функции
  • Табличные выражения
  • EXPLAIN
  • VACUUM

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Полное руководство по увеличению производительности PostgreSQL
Следующая статья →
Объяснение мема Postgres - Уровень 0: Зона неба
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • АО «Евросиб СПб–транспортные системы» – оператор контейнерных сервисов с широкой сетью маршрутов на внутрироссийских и международных направлениях. Имеет успешный опыт управления парком фитинговых платформ, а также организации ускоренных контейнерных поездов, в основе которых точное расписание, оптимальные сроки доставки груза и экономическая целесообразность.

  • KazanExpress — торговая площадка, на которой представлены товары с бесплатной доставкой за один день в более, чем 70 городах России. Аналитическое решение на базе платформы данных Yandex Cloud позволило компании обеспечить демократизацию данных. Результат — принятие обоснованных решений на всех уровнях, увеличение лояльности партнеров и повышение прозрачности бизнеса.

    Мониторинг ключевых метрик в реальном времени минимизировал недополученную прибыль и обеспечил рост прибыльных направлений, а возможности геоаналитики сервиса Yandex DataLens помогли за короткое время проанализировать локации для открытия более 90 ПВЗ в 25 городах России и заложить основу для роста компании.

  • ЭГИС - международная фармацевтическая компания, основанная в 1907 году в Венгрии. Компания имеет представительства более чем в 60 странах мира, в том числе в России. Компания ЭГИС является одним из ведущих производителей дженерических лекарственных средств в Центральной и Восточной Европе. Её деятельность охватывает все звенья производственно-сбытовой фармацевтической цепочки.

  • «ПрофХолод» — крупнейший в России производитель сэндвич-панелей с пенополиуретаном. 

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.