
Полная версия:
Цены в SQL. 18 задач по скидкам и прайсам

Глеб Зайцев
Цены в SQL. 18 задач по скидкам и прайсам
Перед первой задачей
Почему цена — это не просто число
Цена связана со скидкой, себестоимостью, комиссией, остатками, конкурентами и целевой прибылью.
Эта книга показывает, как проверять прайс SQL-запросами до того, как плохая цена попадёт к покупателю.
Задачи не обещают идеальную стратегию ценообразования, а дают практику безопасных расчётов и аудита.
Как читать задачи
Сначала отделяйте текущую цену от финальной цены после скидки и комиссии.
Затем проверяйте, что цена не ниже пола и не уничтожает прибыль.
Все учебные таблицы маленькие, поэтому каждую формулу можно проверить глазами и повторить в SQLite.
Маршрут по задачам
1. Посчитать цену после скидки
2. Посчитать прибыль по прайсу
3. Найти минимальную цену для цели
4. Учесть комиссию в минимальной цене
5. Найти цены ниже пола
6. Сравнить цену с конкурентом
7. Разбить товары на ценовые сегменты
8. Посчитать эффект промокода
9. Найти нулевые и отрицательные цены
10. Взять последнюю цену SKU
11. Посчитать среднюю цену категории
12. Сравнить выручку ценовых сегментов
13. Посчитать стоимость остатков по рознице
14. Найти слишком большие скидки
15. Проверить прибыль новой цены
16. Округлить цену до формата .99
17. Найти кандидатов на повышение цены
18. Собрать аудит прайса
Практические задачи
Задача 1. Посчитать цену после скидки
Рабочий вопросНужно получить фактическую цену продажи, если в таблице хранится базовая цена и процент скидки.
ДанныеCREATE TABLE offers(sku TEXT, price INTEGER, discount_rate REAL);
INSERT INTO offers VALUES ('A',1000,0.10),('B',500,0.00),('C',800,0.25);
ЗапросSELECT sku, ROUND(price * (1 - discount_rate), 2) AS final_price
FROM offers
ORDER BY sku;
Ожидаемый результат[["A", 900.0], ["B", 500.0], ["C", 600.0]]
Почему работаетФинальная цена считается как price умножить на долю после скидки.
Запрос сделан на маленькой синтетической таблице, поэтому ответ можно проверить глазами и повторить в SQLite.
Явный ORDER BY или отдельная агрегация фиксируют смысл результата, а не оставляют его на случайный порядок строк.
Где легко ошибитьсяСкидка 25 означает не минус 25 рублей, а минус 25 процентов, если поле хранит долю 0.25.
Самостоятельная проверкаКакая final_price у C? Объясните ответ по исходным строкам и условию запроса.
Ответ: 600.0. Это следует из исходных строк и условия запроса.
Задача 2. Посчитать прибыль по прайсу
Рабочий вопросНужно проверить, сколько остаётся с каждой продажи после себестоимости при текущей цене.
ДанныеCREATE TABLE offers(sku TEXT, price INTEGER, cost INTEGER);
INSERT INTO offers VALUES ('A',1000,650),('B',500,420),('C',300,350);
ЗапросSELECT sku, price - cost AS gross_profit
FROM offers
ORDER BY sku;
Ожидаемый результат[["A", 350], ["B", 80], ["C", -50]]
Почему работаетРазница цены и себестоимости показывает базовую прибыль до комиссий и налогов.
Запрос сделан на маленькой синтетической таблице, поэтому ответ можно проверить глазами и повторить в SQLite.
Явный ORDER BY или отдельная агрегация фиксируют смысл результата, а не оставляют его на случайный порядок строк.
Где легко ошибитьсяПоложительная цена сама по себе не означает положительную прибыль.
Самостоятельная проверкаКакой SKU убыточный? Объясните ответ по исходным строкам и условию запроса.
Ответ: C: 300 минус 350 даёт минус 50.
Задача 3. Найти минимальную цену для цели
Рабочий вопросНужно рассчитать цену, при которой товар даёт заданную рублёвую прибыль после себестоимости.
ДанныеCREATE TABLE products(sku TEXT, cost INTEGER, target_profit INTEGER);
INSERT INTO products VALUES ('A',650,200),('B',300,150),('C',900,100);
ЗапросSELECT sku, cost + target_profit AS min_price
FROM products
ORDER BY sku;
Ожидаемый результат[["A", 850], ["B", 450], ["C", 1000]]
Почему работаетМинимальная цена без комиссий равна себестоимости плюс целевая прибыль.
Запрос сделан на маленькой синтетической таблице, поэтому ответ можно проверить глазами и повторить в SQLite.
Явный ORDER BY или отдельная агрегация фиксируют смысл результата, а не оставляют его на случайный порядок строк.
Где легко ошибитьсяЕсли есть комиссия площадки, эта простая формула станет нижней оценкой, а не финальной ценой.
Самостоятельная проверкаКакая min_price у B? Объясните ответ по исходным строкам и условию запроса.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
Вы ознакомились с фрагментом книги.
Для бесплатного чтения открыта только часть текста.
Приобретайте полный текст книги у нашего партнера:
Полная версия книги
Всего 10 форматов

