Я решил задачу с использованием PostgreSQL․ Вот мой запрос⁚
sql
SELECT c․name_city AS ″Город″,
COUNT(*) FILTER (WHERE ci․gender ‘M’ AND ci․age > 20 AND ci․age < 40) / COUNT(*)⁚⁚numeric * 100 AS ″Доля мужчин (%)″
FROM client_info ci
JOIN city_info c ON ci․id_city c․id_city
GROUP BY c․name_city;
В этом запросе я объединяю таблицы client_info и city_info по идентификатору города и использую оператор FILTER для подсчета только мужчин в возрасте от 20 до 40 лет․ Затем я считаю общее количество клиентов в каждом городе с помощью функции COUNT и вычисляю долю мужчин, разделив количество мужчин на общее количество клиентов․ Результат выводится в процентах․