Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---ЗАДАНИЕ №1 (SQL-запрос)
- /*Исходные данные:
- Таблица 1. orders (order_id, promocode_id) - уникальные заказы
- Таблица 2. promocodes (promocode_id, name, discount) - уникальные промокоды
- Необходимо вывести:
- 1) Долю заказов с промокодами;
- 2) Самый популярный промокод (название) и число его использований.*/
- ---РЕШЕНИЕ: (PostgreSQL)
- /*Запрос #1: Доля заказов с промокодами.
- Исходим из логики, что в поле promocode_id либо значение есть, либо его нет - NULL.*/
- SELECT
- (COUNT(promocode_id) / COUNT(DISTINCT order_id)::REAL)::NUMERIC(4, 3) * 100 AS ratio_orders_with_promocodes
- FROM
- orders;
- /*Запрос #2: Самый популярный промокод (название) и число его использований.*/
- SELECT
- name AS promocode_name,
- cnt_uses_promocode
- FROM
- promocodes
- RIGHT JOIN (
- SELECT
- promocode_id,
- COUNT(promocode_id) AS cnt_uses_promocode
- FROM
- orders
- WHERE
- promocode_id IS NOT NULL
- GROUP BY
- promocode_id
- ) AS subq_orders ON promocodes.promocode_id = subq_orders.promocode_id
- ORDER BY
- cnt_uses_promocode DESC
- LIMIT 1;
Add Comment
Please, Sign In to add comment