Решение по теме агрегации и функции

This commit is contained in:
elena belykh
2026-01-07 20:49:42 +03:00
parent 9e35fa45cd
commit f134710dea
@@ -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;