made changes to the agregations
This commit is contained in:
@@ -4,7 +4,7 @@ SELECT p.category, COUNT (*) AS products_count
|
||||
FROM products p
|
||||
|
||||
GROUP BY category
|
||||
ORDER BY products_count DESC
|
||||
ORDER BY products_count DESC;
|
||||
|
||||
/*Что будет, если убрать ORDER BY — как изменится чтение результата для продукта/аналитика?
|
||||
Аналитик может пропустить товар с самым большим значением или с самым малым
|
||||
@@ -20,7 +20,7 @@ SELECT order_id, SUM(quantity) AS total_quantity, SUM(quantity * price_at_purcha
|
||||
FROM order_items oi
|
||||
|
||||
GROUP BY order_id
|
||||
ORDER BY order_revenue DESC
|
||||
ORDER BY order_revenue DESC;
|
||||
|
||||
/*Что будет, если убрать GROUP BY и оставить SUM(quantity * price_at_purchase)?
|
||||
Будет ошибка, так как order_id нигде не задействовано
|
||||
@@ -35,7 +35,7 @@ SELECT category, SUM (oi.quantity * oi.price_at_purchase) AS category_revenue
|
||||
FROM order_items oi
|
||||
JOIN products p ON oi.product_id = p.id
|
||||
GROUP BY p.category
|
||||
ORDER BY category_revenue DESC
|
||||
ORDER BY category_revenue DESC;
|
||||
|
||||
/*Почему группировка идёт по p.category, а не по p.id?
|
||||
Задача была группировать по категориям, поэтому так. Если бы задача была группировать по айдишникам продуктов, то да, делали бы так.
|
||||
@@ -50,7 +50,7 @@ SELECT COUNT(order_id), SUM (oi.quantity * oi.price_at_purchase) AS order_revenu
|
||||
FROM order_items oi
|
||||
JOIN orders o ON oi.order_id = o.id
|
||||
WHERE status = 'paid'
|
||||
ORDER BY order_revenue DESC
|
||||
ORDER BY order_revenue DESC;
|
||||
|
||||
/*
|
||||
Чем результат этой задачи будет отличаться от задачи 2 (где статус не учитывался)?
|
||||
@@ -66,7 +66,8 @@ SELECT category, SUM (oi.quantity * oi.price_at_purchase) AS category_revenue
|
||||
FROM order_items oi
|
||||
JOIN products p ON oi.product_id = p.id
|
||||
GROUP BY p.category
|
||||
ORDER BY category_revenue DESC
|
||||
HAVING SUM (oi.quantity * oi.price_at_purchase) > 1000
|
||||
ORDER BY category_revenue DESC;
|
||||
|
||||
/* Почему нельзя написать WHERE category_revenue > 1000?
|
||||
Потому что where фильтрует только строки, а не группы
|
||||
@@ -84,7 +85,7 @@ FROM users u
|
||||
WHERE is_active IS TRUE
|
||||
GROUP BY country
|
||||
HAVING COUNT(*) >= 2
|
||||
ORDER BY active_users_count DESC
|
||||
ORDER BY active_users_count DESC;
|
||||
|
||||
/*
|
||||
Почему фильтр по активности (is_active = true) логичнее писать в WHERE, а не в HAVING?
|
||||
@@ -101,7 +102,7 @@ FROM order_items oi
|
||||
JOIN products p ON oi.product_id = p.id
|
||||
GROUP BY product_name
|
||||
ORDER BY SUM(quantity) DESC
|
||||
LIMIT 3
|
||||
LIMIT 3;
|
||||
|
||||
/*
|
||||
Чем рейтинг по total_quantity_sold отличается от рейтинга по выручке (SUM(quantity * price_at_purchase))?
|
||||
@@ -119,7 +120,7 @@ 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) < 100
|
||||
ORDER BY SUM(quantity * price_at_purchase)
|
||||
ORDER BY SUM(quantity * price_at_purchase);
|
||||
|
||||
/*
|
||||
Какие реальные причины могут быть у очень маленьких заказов (1–2 гипотезы)?
|
||||
|
||||
Reference in New Issue
Block a user