Групировка по двум таблицам - MySQL
Формулировка задачи:
Добрый день.
Подскажите как составить верный запрос.
Есть таблица users где много инфы о пользователе, возьмем основную
id_user first_name gender
Вторая таблица visits Где содержится информация о посещениях пользователей у определенных клиентов.
id_visit id_user id_client
Соответственно в таблице visits много визитов одного id_user и у разных клиентов.
Нужно выбрать сколько мужчин gender = 1 и сколько женщин gender = 2 среди всех visits у определенного id_client например id_client = 12
SELECT users.gender, COUNT(*) FROM `users` LEFT JOIN vizits ON vizits.id_user = users.id_user WHERE vizits.id_client='12' AND users_hotspot.gender!=0 GROUP BY users.gender
Данным запросом он суммирует все id_user, то есть не уникальных пользователей показывает а дубли тоже считает. А если делать GROUP BY vizits.id_user тогда не собирает в две колонки как при первом запросе
sex COUNT(*)
1 45836
2 34267
Решение задачи: «Групировка по двум таблицам»
textual
Листинг программы
SELECT gender, COUNT(*) AS COUNT FROM users WHERE id_user IN (SELECT DISTINCT id_user FROM vizits WHERE id_client='12') GROUP BY gender
Объяснение кода листинга программы
- Код написан на SQL (Structured Query Language), который используется для работы с реляционными базами данных.
- Код выполняет группировку данных по полу пользователей (gender).
- В подзапросе используется оператор DISTINCT для получения уникальных значений id_user из таблицы vizits, где id_client равен 12.
- В основном запросе используется оператор COUNT(*) для подсчета количества пользователей каждого пола.
- Результатом выполнения запроса будет список, содержащий два элемента: пол пользователя и количество пользователей этого пола.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д