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