homework "6) Агрегации и группировки" done
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user