Maison > Questions et réponses > le corps du texte
Supposons que j'ai des statistiques sur le nombre de visites par utilisateurs dans chaque pays :
La requête est la suivante :
SELECT countries_users.user_id, countries.name, count(countries_users.id) as count_visit FROM countries_users LEFT JOIN countries on countries.id = countries_users.user_id WHERE countries_users.user_id IN (111, ...) GROUP BY countries_user.user_id, countries.id
Les résultats sont les suivants :
user_id | countries | count_visit ------------------------------- 111 | Norway | 5 111 | Japan | 2 ... | ... | ...
Maintenant, normalement, je ferais cela au niveau du code. Cependant, pour une raison stupide, je souhaite ajouter une colonne supplémentaire au jeu de résultats, qui correspond au nombre total de visites de l'utilisateur, quel que soit le pays.
Donc, le résultat deviendra :
user_id | countries | count_visit | overall_visit --------------------------------------------------- 111 | Norway | 5 | 7 111 | Japan | 2 | 7 ... | ... | ... | ...
P粉8199374862024-02-27 13:01:46
vous aurez peut-être besoin d'une sous-requête
SELECT cu.user_id, c.name AS countries, count(cu.id) AS count_visit, visitall.total_count_visit AS overall_visit FROM countries_users cu LEFT JOIN countries c ON c.id = cu.user_id LEFT JOIN ( SELECT user_id, SUM(count(id)) AS total_count_visit FROM countries_users WHERE user_id IN (111, ...) GROUP BY user_id ) AS visitall ON cu.user_id = visitall.user_id WHERE cu.user_id IN (111, ...) GROUP BY cu.user_id, c.id, visitall.total_count_visit