Решение по теме агрегации и функции
This commit is contained in:
@@ -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;
|
||||||
Reference in New Issue
Block a user