// ЗАДАЧИ

Задачи по SQL с решениями

100 задач на PostgreSQL по данным e-commerce маркетплейса: агрегации, JOIN, оконные функции, когорты и retention. 20 бесплатных — с решением и разбором, решаются прямо в браузере.

SQLВыручка по статусам заказовПосчитайте общую сумму заказов (amount) для каждого статуса (status). Выведите status и total_amount, отсортируйте по…Easy · Бесплатно→ SQLТоп-5 городов по количеству пользователейНайдите 5 городов, в которых зарегистрировано больше всего пользователей. Выведите city и user_count.Easy · Бесплатно→ SQLСредний чек по каналам привлеченияДля каждого канала привлечения (acquisition_channel) посчитайте средний чек завершённых заказов (status = 'completed')…Easy · Бесплатно→ SQLКатегории с высоким средним рейтингомНайдите категории товаров, у которых средний рейтинг отзывов выше 4.0 и при этом есть не менее 100 отзывов. Выведите…Easy · Бесплатно→ SQLСравнение Premium и обычных пользователейСравните Premium и обычных пользователей: для каждой группы (is_premium) посчитайте количество пользователей…Easy · Бесплатно→ SQLПользователи без заказовНайдите пользователей, которые зарегистрировались, но не сделали ни одного заказа. Выведите user_id, registration_date…Easy · Бесплатно→ SQLТоп-5 категорий по количеству заказовДля каждой категории товаров посчитайте количество уникальных завершённых заказов, в которых есть хотя бы один товар…Easy · Бесплатно→ SQLВыручка продавцов с названием и городомДля каждого продавца посчитайте выручку от завершённых заказов (сумма unit_price * quantity из order_items). Выведите…Medium · Бесплатно→ SQLПары пользователей, купивших один товарНайдите пары пользователей, которые купили один и тот же товар (в завершённых заказах). Выведите product_id, user_id_1…Medium · Бесплатно→ SQLПользователи с тратами выше среднегоНайдите пользователей, чья суммарная сумма завершённых заказов превышает среднюю суммарную сумму по всем пользователям…Medium · Бесплатно→ SQLДоля выручки каждой категорииДля каждой категории товаров посчитайте долю от общей выручки (завершённые заказы). Выведите category, category_revenue…Medium · Бесплатно→ SQLТовары, которые ни разу не заказалиНайдите товары, которые ни разу не появлялись ни в одном заказе (не только в завершённых — вообще ни в каком). Выведите…Medium · Бесплатно→ SQLРанг пользователей по тратам внутри городаДля каждого пользователя посчитайте общую сумму завершённых заказов и присвойте ранг внутри его города (по убыванию…Medium · Бесплатно→ SQLСравнение заказа с предыдущимДля каждого завершённого заказа вычислите разницу суммы с предыдущим завершённым заказом того же пользователя. Выведите…Medium · Бесплатно→ SQLНакопительная выручка по днямПосчитайте ежедневную выручку (сумма amount завершённых заказов) и накопительную выручку с начала данных. Выведите…Medium · Бесплатно→ SQLДецили пользователей по тратамРазбейте пользователей на 10 равных групп (децилей) по суммарным тратам на завершённые заказы. Для каждого дециля…Hard · Бесплатно→ SQLДни без заказов за последние 6 месяцевНайдите все даты за период с 2024-07-01 по 2024-12-31, когда не было ни одного заказа (любого статуса). Выведите…Medium · Бесплатно→ SQLСреднее время доставки по городам (с учётом NULL)Для каждого города пользователя посчитайте: среднее время доставки в днях (avg_delivery, округлить до 1), долю заказов…Medium · Бесплатно→ SQLКогортный retention: Day 7 и Day 30Для каждой когорты (месяц регистрации, формат YYYY-MM) посчитайте: — количество пользователей в когорте (cohort_size) …Hard · Бесплатно→ SQLВоронка конверсий по платформамПостройте воронку конверсий по шагам: page_view → search → view_item → add_to_cart → begin_checkout → purchase. Для…Hard · Бесплатно→ SQLКоличество заказов по месяцамПосчитай количество заказов и суммарную выручку по месяцам за весь период. Отсортируй по месяцу. В результате должны…Easy · Premium→ SQLВыручка по дням неделиОпредели, в какой день недели суммарная выручка максимальна. Выведи: день недели (число 0-6, где 0 = воскресенье)…Easy · Premium→ SQLСреднее количество товаров в заказеПосчитай среднее количество позиций (строк) в одном заказе и среднее суммарное количество единиц товара. Выведи одну…Easy · Premium→ SQLТоп-10 продавцов по количеству товаровВыведи топ-10 продавцов по количеству товаров в каталоге. Покажи: seller_name, city, product_count. Отсортируй по…Easy · Premium→ SQLАнализ промокодовПроанализируй использование промокодов. Для каждого промокода (включая NULL — заказы без промокода) покажи: promo_code…Medium · Premium→ SQLВыручка по городам и категориямПострой таблицу выручки по городам пользователей и категориям товаров. Покажи только комбинации с выручкой > 100000…Medium · Premium→ SQLMonthly Active Users (MAU)Посчитай MAU — количество уникальных пользователей, совершивших хотя бы одно событие, по месяцам. Выведи: month, mau…Medium · Premium→ SQLСредний рейтинг по продавцамПосчитай средний рейтинг для каждого продавца (seller). Покажи только продавцов с 10+ отзывами. Выведи: seller_name…Medium · Premium→ SQLЗаказы с детализацией по товарамВыведи все позиции заказов за январь 2024 с деталями: order_id, order_date (только дата), product_name, category…Easy · Premium→ SQLПервый заказ каждого пользователяДля каждого пользователя найди дату и сумму его первого заказа. Выведи: user_id, city, first_order_date…Medium · Premium→ SQLПолный отчёт по товарамДля каждого товара покажи полный отчёт: product_name, category, seller_name, total_sold (суммарный quantity)…Medium · Premium→ SQLПользователи, покупавшие у разных продавцовНайди пользователей, которые покупали товары у 3 и более разных продавцов. Выведи: user_id, city, distinct_sellers…Medium · Premium→ SQLТовары без отзывовНайди все товары, у которых нет ни одного отзыва, но которые были проданы хотя бы 1 раз. Выведи: product_name…Easy · Premium→ SQLПродавцы без продаж за последний кварталНайди продавцов, у которых не было ни одной продажи за последний квартал (Q4 2024: октябрь-декабрь 2024). Выведи…Medium · Premium→ SQLПокупки у продавцов из своего городаНайди долю заказов, где пользователь и продавец находятся в одном городе. Выведи: city, total_orders, same_city_orders…Medium · Premium→ SQLТовары, которые покупают вместеНайди пары товаров, которые чаще всего покупают в одном заказе. Выведи: product_1, product_2, times_together. Условие…Hard · Premium→ SQLПользователи с расходами выше медианыНайди пользователей, чьи суммарные расходы выше медианного значения среди всех пользователей. Выведи: user_id, city…Medium · Premium→ SQLТовары дороже среднего по категорииНайди товары, цена которых выше средней цены в их категории. Выведи: product_name, category, price, category_avg_price…Medium · Premium→ SQLЗаказы выше личного среднегоДля каждого пользователя найди заказы, сумма которых выше его персонального среднего чека. Выведи: user_id, order_id…Medium · Premium→ SQLВторой по цене товар в каждой категорииНайди второй по стоимости товар в каждой категории. Выведи: category, product_name, price, price_rank. Если несколько…Medium · Premium→ SQLПользователи с заказами каждый месяцНайди пользователей, которые делали хотя бы один заказ каждый месяц на протяжении первого полугодия 2024 (январь-июнь)…Hard · Premium→ SQLТовары в топ-3 по выручке минимум 3 месяцаНайди товары, которые входили в топ-3 по месячной выручке (quantity * unit_price) хотя бы в 3 разных месяцах 2024 года…Hard · Premium→ SQLПродавцы с последовательным ростом выручкиНайди продавцов, у которых выручка росла 3 и более месяцев подряд в 2024 году. Выведи: seller_name…Hard · Premium→ SQLЗаказы больше среднего по городуНайди заказы, сумма которых превышает средний чек заказов из того же города. Выведи: order_id, user_id, city, amount…Medium · Premium→ SQLСкользящее среднее заказов пользователяДля каждого заказа пользователя user_id = 1 посчитай скользящее среднее по последним 3 заказам (включая текущий)…Medium · Premium→ SQLMonth-over-Month рост выручкиПосчитай выручку по месяцам и рост в процентах относительно предыдущего месяца. Выведи: month, revenue…Medium · Premium→ SQLПервый и последний заказ пользователяДля каждого пользователя выведи дату первого и последнего заказа, количество дней между ними (lifetime_days), и…Medium · Premium→ SQLРанжирование товаров внутри категорииПрисвой каждому товару ранг по суммарной выручке внутри его категории (DENSE_RANK). Покажи топ-3 товара каждой…Medium · Premium→ SQL7-дневное скользящее среднее выручкиПосчитай ежедневную выручку за март 2024 и добавь 7-дневное скользящее среднее (по текущему дню и 6 предыдущим)…Medium · Premium→ SQLДоля продавца в месячной выручкеДля каждого продавца посчитай его долю в общей выручке за каждый месяц 2024. Выведи: month, seller_name…Medium · Premium→ SQLНомер заказа пользователяДля каждого заказа определи его порядковый номер для данного пользователя (1-й заказ, 2-й заказ и т.д.). Выведи…Medium · Premium→ SQLВремя между заказами пользователяПосчитай среднее количество дней между заказами для каждого пользователя (с 2+ заказами). Выведи: user_id, order_count…Hard · Premium→ SQLСравнение год к году по месяцамСравни выручку по месяцам 2024 с аналогичными месяцами 2023 года. Выведи: month_num (1-12), revenue_2023, revenue_2024…Hard · Premium→ SQLРаспределение выручки по перцентилямПострой распределение суммарных расходов пользователей по перцентилям. Для каждого перцентиля (10, 25, 50, 75, 90, 95…Hard · Premium→ SQLРаспределение заказов по часамПосчитай количество заказов по часам суток. Выведи: hour (0-23), order_count, pct_of_total (округли до 1). Отсортируй…Easy · Premium→ SQLСравнение заказов неделя к неделеПосчитай количество заказов по неделям (ISO) за 2024 год и добавь сравнение с предыдущей неделей. Выведи: week_start…Medium · Premium→ SQLАнализ NULL в сроках доставкиПосчитай для каждого статуса заказа: количество заказов, количество с NULL delivery_days, процент NULL, средний…Medium · Premium→ SQLСезонный анализ: Q1 vs Q4Сравни показатели Q1 (январь-март) и Q4 (октябрь-декабрь) 2024 года. Выведи: quarter, order_count, total_revenue…Medium · Premium→ SQLСегменты по возрасту пользователяРаздели пользователей на сегменты по времени с момента регистрации до последнего заказа: 'Новичок' (< 30 дней)…Medium · Premium→ SQLПолный календарь заказов (включая нулевые дни)Выведи количество заказов за каждый день марта 2024, включая дни с нулём заказов. Выведи: day, order_count. Отсортируй…Hard · Premium→ SQLКлассификация заказов по суммеКлассифицируй заказы по сумме: 'Мелкий' (< 1000), 'Средний' (1000-5000), 'Крупный' (5000-20000), 'VIP' (> 20000)…Easy · Premium→ SQLСегментация по активности: active / dormant / churnedРаздели пользователей на сегменты по дате последнего заказа (относительно '2024-12-31'): 'Active' (заказ за последние…Medium · Premium→ SQLСводка рейтингов: хорошие vs плохиеДля каждой категории товаров посчитай: общее количество отзывов, количество положительных (4-5), количество…Medium · Premium→ SQLАнализ статусов заказов по каналамДля каждого канала привлечения (acquisition_channel) посчитай: total_orders, completed_orders, cancelled_orders…Medium · Premium→ SQLСкоринг товаров по нескольким критериямСоздай скоринг товаров по 3 критериям: выручка (высокая/средняя/низкая), рейтинг (>= 4.5 / >= 3.5 / < 3.5), количество…Hard · Premium→ SQLАнализ страниц по платформамОпредели, на каких страницах (page_url) проводят время пользователи каждой платформы. Сгруппируй page_url по типу…Medium · Premium→ SQLПользователи, покупавшие в оба годаНайди пользователей, которые сделали хотя бы один заказ и в 2023, и в 2024 году. Выведи: user_id, city, orders_2023…Medium · Premium→ SQLПользователи, ушедшие в 2024Найди пользователей, которые покупали в 2023, но ни разу не покупали в 2024. Выведи: user_id, city…Medium · Premium→ SQLТовары, проданные на всех платформахНайди товары, которые были куплены пользователями со всех трёх платформ (android, ios, web). Выведи: product_name…Medium · Premium→ SQLХронология пользователя: события + заказыПострой единую хронологию для user_id = 1: все его события и заказы в хронологическом порядке. Выведи: event_time…Medium · Premium→ SQLRFM-сегментация пользователейПроведи RFM-анализ. Для каждого пользователя посчитай: - Recency: дни с последнего заказа (от '2024-12-31') …Hard · Premium→ SQLCustomer Lifetime Value (LTV)Посчитай LTV для каждой когорты (месяц регистрации). Формула: ARPU × средний Lifetime в месяцах. Выведи: cohort_month…Hard · Premium→ SQLABC-анализ товаровПроведи ABC-анализ товаров по выручке. A — товары, дающие первые 80% кумулятивной выручки, B — следующие 15% (80-95%)…Hard · Premium→ SQLScorecard продавцовПострой дашборд эффективности продавцов за 2024. Для каждого продавца посчитай: total_revenue, order_count…Hard · Premium→ SQLВоронка конверсии по каналам привлеченияПострой воронку конверсии по каналам привлечения. Для каждого acquisition_channel покажи количество уников на каждом…Hard · Premium→ SQLRetention по каналам привлеченияПосчитай Day 30 retention по каналам привлечения для когорт Q1 2024 (январь-март). Day 30 retention = доля…Hard · Premium→ SQLДекомпозиция выручки: юзеры × заказы × чекДекомпозируй месячную выручку 2024 на составляющие: Revenue = Buyers × Orders_per_Buyer × AOV. Выведи: month, revenue…Hard · Premium→ SQLКумулятивная выручка по когортамДля каждой когорты (квартал регистрации) посчитай кумулятивную выручку по месяцам жизни (Month 0, Month 1, ... Month…Hard · Premium→ SQLWAU с трендом ростаПосчитай Weekly Active Users (WAU) за 2024 и процент роста неделя к неделе. Выведи: week_start, wau, prev_week_wau…Medium · Premium→ SQLВремя от первого визита до первой покупкиДля каждого пользователя, совершившего покупку, посчитай время от первого события (page_view) до первого заказа. Выведи…Hard · Premium→ SQLКаннибализация промоакцийПроанализируй, не каннибализируют ли промокоды обычные продажи. Для каждого месяца 2024 посчитай: долю заказов с…Hard · Premium→ SQLВыручка от новых vs повторных покупателейДля каждого месяца 2024 раздели выручку на две части: от новых покупателей (первый заказ в этом месяце) и от повторных…Hard · Premium→ SQLPower Users: кто генерирует 80% выручкиОпредели, какой процент пользователей генерирует 80% всей выручки. Раздели пользователей на децили по суммарным…Hard · Premium→ SQLЭффект premium-подпискиСравни поведение premium и обычных пользователей. Для каждой группы посчитай: user_count, users_with_orders (% с хотя…Medium · Premium→ SQLЛидеры роста по категориямДля каждой категории товаров посчитай выручку за H1 2024 (январь-июнь) и H2 2024 (июль-декабрь). Найди категорию с…Medium · Premium→ SQLДоля повторных покупокПосчитай Repeat Purchase Rate по месяцам 2024: какая доля покупателей месяца делала покупку и в предыдущем месяце…Medium · Пробная→ SQLДни без единого заказаВ таблице orders есть дни периода 2023-01-01 – 2024-12-31, за которые не сохранилось ни одного заказа. Обычный GROUP BY…Hard · Premium→ SQLТренд размера корзиныПосчитай среднее количество товаров (позиций) в заказе по месяцам 2024. Добавь 3-месячное скользящее среднее. Выведи…Medium · Premium→ SQLДоля рынка продавцов по городамДля каждого города покупателя определи топ-3 продавцов по выручке и их долю рынка в этом городе. Выведи: buyer_city…Hard · Premium→ SQLВлияет ли скорость доставки на рейтинг?Проверь гипотезу: влияет ли скорость доставки на рейтинг заказа. Сгруппируй заказы по delivery_days (1-3 дня =…Medium · Premium→ SQLDAU по платформамПосчитай DAU (Daily Active Users) по каждой платформе за март 2024. Выведи: day, android_dau, ios_dau, web_dau…Medium · Premium→ SQLARPU и ARPPU по месяцамПосчитай ARPU (Average Revenue Per User) и ARPPU (Average Revenue Per Paying User) по месяцам 2024. ARPU = выручка /…Medium · Premium→ SQLStickiness: DAU/MAU ratioПосчитай Stickiness (DAU/MAU ratio) по месяцам 2024. DAU = среднее дневное количество уников за месяц. MAU = общее…Hard · Premium→ SQLАнализ сессий самого активного пользователяОпредели сессии самого активного пользователя — с наибольшим числом событий в events (при равенстве бери наименьший…Hard · Premium→ SQLКаннибализация между категориямиПроверь, покупают ли пользователи товары из разных категорий. Для каждой пары категорий посчитай количество общих…Hard · Premium→ SQLRolling retention по неделямПосчитай rolling (unbounded) retention по неделям для когорты пользователей, зарегистрированных в январе 2024. Rolling…Hard · Premium→ SQLАнализ ценовой эластичностиРазбей товары на ценовые сегменты внутри каждой категории (квартили по цене: Q1-дешёвые, Q4-дорогие). Для каждого…Hard · Premium→ SQLДинамика чека от 1-го к 5-му заказуДля пользователей с 5+ заказами покажи, как меняется средний чек от первого к пятому заказу. Выведи: order_number…Hard · Premium→ SQLКросс-платформенные пользователиСколько пользователей заходят с нескольких платформ? Раздели на: '1 платформа', '2 платформы', '3 платформы'. Для…Medium · Premium→ SQLФинальный дашборд: все ключевые метрикиПострой сводный дашборд за каждый месяц 2024: revenue, order_count, unique_buyers, new_buyers (первый заказ в этом…Hard · Premium→