From df43cbcd41b394dfccacee90234a85d667598c45 Mon Sep 17 00:00:00 2001 From: Saba Bestaev Date: Wed, 4 Jun 2025 20:46:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ english.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/README.md b/README.md index 46849bc..24ef286 100644 --- a/README.md +++ b/README.md @@ -1325,3 +1325,63 @@ WHERE email_verified_at IS NOT NULL; ``` + +93. Какой средний возраст клиентов, купивших Smartwatch (использовать наименование товара product.name) в 2024 году? [(сайт)](https://sql-academy.org/ru/trainer/tasks/93) + +
+ Решение + +```mysql +SELECT AVG(sub.age) AS average_age +FROM ( + SELECT DISTINCT c.customer_key, + c.age + FROM Customer AS c + JOIN Purchase AS pu ON pu.customer_key = c.customer_key + JOIN Product AS p ON p.product_key = pu.product_key + WHERE YEAR(pu.date) = 2024 + AND p.name = 'Smartwatch' + ) AS sub; +``` + +
+ +94. Вывести имена покупателей, каждый из которых приобрёл Laptop и Monitor (использовать наименование товара product.name) в марте 2024 года? [(сайт)](https://sql-academy.org/ru/trainer/tasks/94) + +
+ Решение + +```mysql +SELECT c.name +FROM Customer AS c + JOIN Purchase AS pu ON pu.customer_key = c.customer_key + JOIN Product AS p ON p.product_key = pu.product_key +WHERE YEAR(pu.date) = 2024 + AND MONTH(pu.date) = 3 + AND p.name IN ('Laptop', 'Monitor') +GROUP BY c.customer_key, + c.name +HAVING COUNT(DISTINCT p.name) = 2; +``` + +
+ +97. Посчитать количество работающих складов на текущую дату по каждому городу. Вывести только те города, у которых количество складов более 80. Данные на выходе - город, количество складов. [(сайт)](https://sql-academy.org/ru/trainer/tasks/97) + +
+ Решение + +```mysql +SELECT city, + COUNT(*) AS warehouse_count +FROM Warehouses +WHERE ( + date_close IS NULL + OR date_close > CURRENT_DATE() + ) +GROUP BY city +HAVING warehouse_count > 80 +ORDER BY warehouse_count DESC; +``` + +
\ No newline at end of file diff --git a/english.md b/english.md index 8b6562f..def2e70 100644 --- a/english.md +++ b/english.md @@ -1318,3 +1318,63 @@ WHERE email_verified_at IS NOT NULL; ``` + +93. What is the average age of customers who bought a Smartwatch (use product.name) in 2024? [(сайт)](https://sql-academy.org/ru/trainer/tasks/93) + +
+ Решение + +```mysql +SELECT AVG(sub.age) AS average_age +FROM ( + SELECT DISTINCT c.customer_key, + c.age + FROM Customer AS c + JOIN Purchase AS pu ON pu.customer_key = c.customer_key + JOIN Product AS p ON p.product_key = pu.product_key + WHERE YEAR(pu.date) = 2024 + AND p.name = 'Smartwatch' + ) AS sub; +``` + +
+ +94. Output the names of customers who each purchased a Laptop and Monitor (use product.name) in March 2024? [(сайт)](https://sql-academy.org/ru/trainer/tasks/94) + +
+ Решение + +```mysql +SELECT c.name +FROM Customer AS c + JOIN Purchase AS pu ON pu.customer_key = c.customer_key + JOIN Product AS p ON p.product_key = pu.product_key +WHERE YEAR(pu.date) = 2024 + AND MONTH(pu.date) = 3 + AND p.name IN ('Laptop', 'Monitor') +GROUP BY c.customer_key, + c.name +HAVING COUNT(DISTINCT p.name) = 2; +``` + +
+ +97. Calculate the number of working warehouses as of the current date for each city. Output only those cities that have more than 80 warehouses. Output data - city, number of warehouses. [(сайт)](https://sql-academy.org/ru/trainer/tasks/97) + +
+ Решение + +```mysql +SELECT city, + COUNT(*) AS warehouse_count +FROM Warehouses +WHERE ( + date_close IS NULL + OR date_close > CURRENT_DATE() + ) +GROUP BY city +HAVING warehouse_count > 80 +ORDER BY warehouse_count DESC; +``` + +
\ No newline at end of file