From 65fc8315c59f4d1ddd41fc013d0ff568abc77edf Mon Sep 17 00:00:00 2001 From: pavel Date: Sat, 14 Feb 2026 13:40:11 +0100 Subject: [PATCH] =?UTF-8?q?homework=20"6)=20=D0=90=D0=B3=D1=80=D0=B5=D0=B3?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B8=20=D0=B3=D1=80=D1=83=D0=BF?= =?UTF-8?q?=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B8"=20done?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pmikhailov/postgresql/.project | 11 ++ .../homework-aggregation-groupby.sql | 111 ++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 pmikhailov/postgresql/.project create mode 100644 pmikhailov/postgresql/homework-aggregation-groupby.sql diff --git a/pmikhailov/postgresql/.project b/pmikhailov/postgresql/.project new file mode 100644 index 0000000..92f941b --- /dev/null +++ b/pmikhailov/postgresql/.project @@ -0,0 +1,11 @@ + + + postgresql + + + + + + + + diff --git a/pmikhailov/postgresql/homework-aggregation-groupby.sql b/pmikhailov/postgresql/homework-aggregation-groupby.sql new file mode 100644 index 0000000..f03b4c4 --- /dev/null +++ b/pmikhailov/postgresql/homework-aggregation-groupby.sql @@ -0,0 +1,111 @@ +/* Задание 1 */ + +SELECT + category, + count(*) AS products_count  +FROM + products p +GROUP BY category +ORDER BY products_count DESC; + + +/* Задание 2 + * Тут всё решение в задании + * */ + +SELECT + order_id, + sum(quantity) AS total_quantity, + sum(quantity * price_at_purchase) AS order_revenue +FROM + order_items oi +GROUP BY order_id +ORDER BY order_revenue DESC; + + +/* Задание 3 */ + +SELECT + p.category, + COALESCE(sum(oi.quantity * oi.price_at_purchase), 0) AS category_revenue +FROM + products p +LEFT JOIN + order_items oi ON p.id = oi.product_id +GROUP BY p.category + + +/* Задание 4 */ + +SELECT + o.id AS order_id, + sum(oi.quantity * oi.price_at_purchase) AS order_revenue  +FROM + orders o +LEFT JOIN + order_items oi ON o.id = oi.order_id +WHERE o.status = 'paid' +GROUP BY 1 +ORDER BY 2 DESC + + +/* Задание 5 */ + +SELECT + p.category, + COALESCE(sum(oi.quantity * oi.price_at_purchase), 0) AS category_revenue +FROM + products p +LEFT JOIN + order_items oi ON p.id = oi.product_id +GROUP BY + p.category +HAVING + sum(oi.quantity * oi.price_at_purchase) > 1; + + +/* Задание 6 */ + +SELECT + country, + count(is_active) AS active_users_count  +FROM + users u +WHERE + is_active = TRUE +GROUP BY + country +HAVING + count(is_active) > 2; + + +/* Задание 7 */ + +SELECT + p.name AS product_name, + COALESCE (sum(oi.quantity), 0) AS total_quantity_sold  +FROM + products p +LEFT JOIN + order_items oi ON p.id = oi.product_id +GROUP BY p.name +ORDER BY 2 DESC +LIMIT 3 + + +/* Задание 8 + * Условие для HAVING в задаче кривое, < 100 ничего нет + * */ + +SELECT + order_id, + SUM(quantity * price_at_purchase) AS order_revenue  +FROM + order_items oi +GROUP BY + order_id +HAVING + SUM(quantity * price_at_purchase) < 10000 +ORDER BY 2; + +