SELECT
CASE
WHEN order_items_count BETWEEN 1 AND 3 THEN 'Малый'
WHEN order_items_count BETWEEN 4 AND 6 THEN 'Средний'
ELSE 'Большой'
END AS order_size,
COUNT(*) AS orders_count
FROM
(
SELECT
order_id,
COUNT(*) AS order_items_count
FROM
order_items
GROUP BY
order_id
) AS subquery
GROUP BY
order_size
ORDER BY
orders_count;
Задание:
Разбейте заказы из таблицы orders на 3 группы в зависимости от количества товаров, попавших в заказ:
Малый (от 1 до 3 товаров);
Средний (от 4 до 6 товаров);
Большой (7 и более товаров).
Посчитайте число заказов, попавших в каждую группу. Группы назовите соответственно «Малый», «Средний», «Большой» (без кавычек).
Выведите наименования групп и число товаров в них. Колонку с наименованием групп назовите order_size, а колонку с числом заказов — orders_count.
Отсортируйте полученную таблицу по колонке с числом заказов по возрастанию.
Поля в результирующей таблице: order_size, orders_count
SELECT
CASE
WHEN array_length(product_ids, 1) >= 7 then 'Большой'
WHEN array_length(product_ids, 1) >= 4 then 'Средний'
ELSE 'Малый'
--WHEN array_length(product_ids, 1) >= 1 AND array_length(product_ids, 1) <= 3 THEN 'Малый'
--WHEN array_length(product_ids, 1) >= 4 AND array_length(product_ids, 1) <= 6 THEN 'Средний'
--ELSE 'Большой'
END AS order_size,
COUNT(order_id) AS orders_count
FROM orders
GROUP BY order_size
ORDER BY order_size;