[Вопрос решен] Есть 3 таблицы с данными.

В таблице client_geo хранится...

Есть 3 таблицы с данными.

В таблице client_geo хранится расшифровка идентификаторов городов и наименования федеральных округов, в которых расположены клиентские города.

Таблица payments

• id_client

• time_payment

• amt_payment

Таблица client_info

• id_client

• gender

• age

• id_city

Таблица city_info

• id_city

• name_city

• name_region

Напишите запросы SQL в Metabase которые выводят

Для каждого города найдите долю мужчин (% мужчин среди всех клиентов в данном городе). Ограничьтесь только клиентами, которым от 20 до 40 лет. В выводе используйте названия городов, а не идентификаторы.

(1) Смотреть решение

Ответ нейросети AfinaAI

Для решения данной задачи необходимо выполнить следующие шаги⁚
1. Найти общее количество мужчин в каждом городе, ограничиваясь клиентами в возрасте от 20 до 40 лет.​
Для этого можно воспользоваться следующим запросом⁚

sql
SELECT city_info.​name_city, COUNT(client_info.​id_client) as total_males
FROM client_info
INNER JOIN city_info ON client_info.​id_city city_info.​id_city
WHERE client_info.​gender ‘M’ AND client_info.​age > 20 AND client_info.​age < 40 GROUP BY city_info.​name_city В данном запросе мы выбираем название города из таблицы city_info и считаем количество клиентов (мужчин) из таблицы client_info, удовлетворяющих заданным условиям (мужской пол и возраст от 20 до 40 лет). Затем используем оператор GROUP BY для группировки результатов по названию города. 2.​ Найти общее количество клиентов в каждом городе, ограничиваясь клиентами в возрасте от 20 до 40 лет.​ Для этого можно воспользоваться следующим запросом⁚ sql SELECT city_info.name_city, COUNT(client_info.​id_client) as total_clients FROM client_info INNER JOIN city_info ON client_info.​id_city city_info.​id_city WHERE client_info.​age > 20 AND client_info.​age < 40 GROUP BY city_info.​name_city В этом запросе мы выбираем название города из таблицы city_info и считаем общее количество клиентов из таблицы client_info, удовлетворяющих условию о возрасте от 20 до 40 лет.​ Также используем оператор GROUP BY для группировки результатов по названию города.​ 3. Соединить результаты первых двух запросов, чтобы вычислить долю мужчин (% мужчин среди всех клиентов в данном городе).​ Для этого можно воспользоваться следующим запросом⁚
sql
SELECT a.​name_city, (a.​total_males * 100.​0 / b.​total_clients) as male_percentage
FROM (
SELECT city_info.​name_city, COUNT(client_info.​id_client) as total_males
FROM client_info
INNER JOIN city_info ON client_info.​id_city city_info.​id_city
WHERE client_info;gender ‘M’ AND client_info.​age > 20 AND client_info.age < 40 GROUP BY city_info.name_city ) a INNER JOIN ( SELECT city_info.​name_city, COUNT(client_info.​id_client) as total_clients FROM client_info INNER JOIN city_info ON client_info.​id_city city_info.​id_city WHERE client_info.​age > 20 AND client_info.​age < 40 GROUP BY city_info.​name_city ) b ON a.​name_city b.​name_city

Читайте также  Как заплатить за концерт в казахстане без карты на яндекс афише?
В этом запросе мы сначала выполняем два предыдущих запроса в подзапросах a и b.​ Затем соединяем результаты этих запросов по названию города и вычисляем долю мужчин среди всех клиентов для каждого города, используя формулу total_males * 100.​0 / total_clients.​ 4.​ Использовать названия городов вместо идентификаторов в выводе.​ Для этого можно просто использовать поля name_city вместо идентификаторов во всех запросах.​ В итоговом запросе эта замена уже выполнена. Таким образом, в итоговом запросе мы получаем название города и долю мужчин (% мужчин среди всех клиентов в данном городе), удовлетворяющих условию о возрасте от 20 до 40 лет.​ Запрос можно выполнить в Metabase для получения нужных результатов.​

AfinaAI