From f134710dea510f24386d4936344a09f58c7e82f8 Mon Sep 17 00:00:00 2001 From: elena belykh Date: Wed, 7 Jan 2026 20:49:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=82=D0=B5=D0=BC=D0=B5=20=D0=B0=D0=B3=D1=80?= =?UTF-8?q?=D0=B5=D0=B3=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B8=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../агрегации и группировки/агрегации.sql | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 ebelykh/postgresql/агрегации и группировки/агрегации.sql diff --git a/ebelykh/postgresql/агрегации и группировки/агрегации.sql b/ebelykh/postgresql/агрегации и группировки/агрегации.sql new file mode 100644 index 0000000..7f7ce9b --- /dev/null +++ b/ebelykh/postgresql/агрегации и группировки/агрегации.sql @@ -0,0 +1,72 @@ +--Задача 1 +В варианте А: WHERE фильтрует товары и убирает те, которые не в наличии, потом эти товары(строки)участвуют в группировке, в варианте В - HAVING фильтрует уже сгруппированные данные(категории) + +--Задача 2356 +SELECT teacher_id, + COUNT(DISTINCT subject_id) AS cnt +FROM teacher +GROUP BY teacher_id; + +--Задача 1581 +SELECT customer_id, + COUNT(v.visit_id) AS count_no_trans +FROM visits v +LEFT JOIN transactions t +ON v.visit_id = t.visit_id +WHERE transaction_id IS NULL +GROUP BY customer_id; + +--Задача 1141 +SELECT activity_date AS day, + COUNT(DISTINCT user_id) AS active_users +FROM Activity +WHERE activity_date BETWEEN '2019-06-28' AND '2019-07-27' +GROUP BY activity_date; + +--Задача 596 +SELECT class +FROM Courses +GROUP BY class +HAVING COUNT(student) >= 5; + +--Задача 1075 +SELECT project_id, + ROUND(AVG(experience_years), 2) AS average_years +FROM Project p +JOIN Employee e +ON p.employee_id = e.employee_id +GROUP BY project_id; + +--Задача 1729 +SELECT user_id, + COUNT (follower_id) AS followers_count +FROM followers +GROUP BY user_id +ORDER BY user_id; + +--Задача 1633 +SELECT + r.contest_id, + ROUND( + COUNT(r.user_id) * 100.0 / (SELECT COUNT(*) FROM Users), + 2 + ) AS percentage +FROM Register r +GROUP BY r.contest_id +ORDER BY percentage DESC, r.contest_id ASC; + +--Задача 1251 +SELECT + p.product_id, + COALESCE( + ROUND( + SUM(u.units * p.price) * 1.0 / SUM(u.units), + 2 + ), + 0 + ) AS average_price +FROM Prices p +LEFT JOIN UnitsSold u + ON p.product_id = u.product_id + AND u.purchase_date BETWEEN p.start_date AND p.end_date +GROUP BY p.product_id; \ No newline at end of file