**Контекст:** Образовательная платформа хранит отзывы студентов. Нужно оценить распределение оценок по каждому курсу.
**Данные:**
[см. код в задании]
**Задание:**
Для каждого курса посчитайте:
1. Общее количество отзывов
2. Количество положительных (`rating >= 4`), нейтральных (`rating = 3`) и отрицательных (`rating <= 2`)
3. Долю положительных отзывов в процентах (округлить до 1 знака)
Выведите только курсы с >= 10 отзывами, отсортируйте по доле положительных по убыванию.
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE course_reviews (
id SERIAL PRIMARY KEY,
course_id INT NOT NULL,
course_name VARCHAR(300) NOT NULL,
user_id INT NOT NULL,
rating INT NOT NULL CHECK (rating BETWEEN 1 AND 5),
review_text TEXT,
created_at TIMESTAMP NOT NULL
);
CASE WHEN агрегация проценты
Это задание для уровня Junior. Подходит для начинающих аналитиков, проверяет базовые знания SQL/Python/статистики.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: CASE WHEN, агрегация, проценты.
На реальном собеседовании на подобную задачу отводится 5-10 минут — проверяется скорость и базовая грамотность. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания