homework "6) Агрегации и группировки" done

This commit is contained in:
pavel
2026-02-14 13:40:11 +01:00
parent 53d802bb89
commit 65fc8315c5
2 changed files with 122 additions and 0 deletions
@@ -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;